Advanced Lane Finding

Udacity Self Driving Car Engineer Nanodegree - Project 4

The goal of this project is to develop a pipeline to process a video stream from a forward-facing camera mounted on the front of a car, and output an annotated video which identifies:

  • The positions of the lane lines
  • The location of the vehicle relative to the center of the lane
  • The radius of curvature of the road
In [1]:
%matplotlib inline
import numpy as np
import cv2
import glob
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from moviepy.editor import VideoFileClip
from collections import deque

Step 1: Distortion Correction

The first step in the project is to remove any distortion from the images by calculating the camera calibration matrix and distortion coefficients using a series of images of a chessboard.

In [2]:
objp = np.zeros((6*9,3), np.float32)
objp[:,:2] = np.mgrid[0:9, 0:6].T.reshape(-1,2)

objpoints = [] # 3d points in real world space
imgpoints = [] # 2d points in image plane.

images = glob.glob('camera_cal/calibration*.jpg')

for idx, fname in enumerate(images):
    img = cv2.imread(fname)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # Find the chessboard corners
    ret, corners = cv2.findChessboardCorners(gray, (9,6), None)

    # If found, add object points, image points
    if ret == True:
        objpoints.append(objp)
        imgpoints.append(corners)

        # Draw and display the corners
        cv2.drawChessboardCorners(img, (9,6), corners, ret)
        f, (ax1, ax2) = plt.subplots(1, 2, figsize=(8,4))
        ax1.imshow(cv2.cvtColor(mpimg.imread(fname), cv2.COLOR_BGR2RGB))
        ax1.set_title('Original Image', fontsize=18)
        ax2.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
        ax2.set_title('With Corners', fontsize=18)

Next I will define a function undistort() which uses the calculate camera calibration matrix and distortion coefficients to remove distortion from an image and output the undistorted image.

In [3]:
# Remove distortion from images
def undistort(image, show=True, read = True):
    if read:
        img = cv2.imread(image)
    else:
        img = image
    img_size = (img.shape[1], img.shape[0])
    ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, img_size, None, None)
    undist = cv2.undistort(img, mtx, dist, None, mtx)
    if show:
        f, (ax1, ax2) = plt.subplots(1, 2, figsize=(9,6))
        ax1.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
        ax1.set_title('Original Image', fontsize=20)
        ax2.imshow(cv2.cvtColor(undist, cv2.COLOR_BGR2RGB))
        ax2.set_title('Undistorted Image', fontsize=20)
    else:
        return undist
In [4]:
images = glob.glob('test_images/test*.jpg')
for image in images:
    undistort(image)

Step 2: Perspective Transform

In this step I will define a function birds_eye() which transforms the undistorted image to a "birds eye view" of the road which focuses only on the lane lines and displays them in such a way that they appear to be relatively parallel to eachother. This will make it easier later on to fit polynomials to the lane lines and measure the curvature.

In [5]:
# Perform perspective transform
def birds_eye(img, display=True, read = True):
    if read:
        undist = undistort(img, show = False)
    else:
        undist = undistort(img, show = False, read=False) 
    img_size = (undist.shape[1], undist.shape[0])
    offset = 0
    src = np.float32([[490, 482],[810, 482],
                      [1250, 720],[40, 720]])
    dst = np.float32([[0, 0], [1280, 0], 
                     [1250, 720],[40, 720]])
    M = cv2.getPerspectiveTransform(src, dst)
    warped = cv2.warpPerspective(undist, M, img_size)
    if display:
        f, (ax1, ax2) = plt.subplots(1, 2, figsize=(9, 6))
        f.tight_layout()
        ax1.imshow(cv2.cvtColor(undist, cv2.COLOR_BGR2RGB))
        ax1.set_title('Undistorted Image', fontsize=20)
        ax2.imshow(cv2.cvtColor(warped, cv2.COLOR_BGR2RGB))
        ax2.set_title('Undistorted and Warped Image', fontsize=20)
        plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.)
    else:
        return warped, M
In [6]:
for image in glob.glob('test_images/test*.jpg'):
    birds_eye(image)

Step 3: Apply Binary Thresholds

In this step I attempted to convert the warped image to different color spaces and create binary thresholded images which highlight only the lane lines and ignore everything else. I found that the following color channels and thresholds did a good job of identifying the lane lines in the provided test images:

  • The S Channel from the HLS color space, with a min threshold of 180 and a max threshold of 255, did a fairly good job of identifying both the white and yellow lane lines, but did not pick up 100% of the pixels in either one, and had a tendency to get distracted by shadows on the road.
  • The L Channel from the LUV color space, with a min threshold of 225 and a max threshold of 255, did an almost perfect job of picking up the white lane lines, but completely ignored the yellow lines.
  • The B channel from the Lab color space, with a min threshold of 155 and an upper threshold of 200, did a better job than the S channel in identifying the yellow lines, but completely ignored the white lines.

I chose to create a combined binary threshold based on the three above mentioned binary thresholds, to create one combination thresholded image which does a great job of highlighting almost all of the white and yellow lane lines.

Note: The S binary threshold was left out of the final combined binary image and was not used in detecting lane lines because it added extra noise to the binary image and interfered with detecting lane lines accurately.

In [ ]:
 
In [7]:
# Create binary thresholded images to isolate lane line pixels
def apply_thresholds(image, show=True , read=True):
    if read :
        img, M = birds_eye(image, display = False)
    else:
        img, M = birds_eye(image, display = False , read = False)

    s_channel = cv2.cvtColor(img, cv2.COLOR_BGR2HLS)[:,:,2]
    
    l_channel = cv2.cvtColor(img, cv2.COLOR_BGR2LUV)[:,:,0]

    b_channel = cv2.cvtColor(img, cv2.COLOR_BGR2Lab)[:,:,2]   

    # Threshold color channel
    s_thresh_min = 180
    s_thresh_max = 255
    s_binary = np.zeros_like(s_channel)
    s_binary[(s_channel >= s_thresh_min) & (s_channel <= s_thresh_max)] = 1
    
    b_thresh_min = 155
    b_thresh_max = 200
    b_binary = np.zeros_like(b_channel)
    b_binary[(b_channel >= b_thresh_min) & (b_channel <= b_thresh_max)] = 1
    
    l_thresh_min = 225
    l_thresh_max = 255
    l_binary = np.zeros_like(l_channel)
    l_binary[(l_channel >= l_thresh_min) & (l_channel <= l_thresh_max)] = 1

    #color_binary = np.dstack((u_binary, s_binary, l_binary))
    
    combined_binary = np.zeros_like(s_binary)
    combined_binary[(l_binary == 1) | (b_binary == 1)] = 1

    if show == True:
        # Plotting thresholded images
        f, ((ax1, ax2, ax3), (ax4,ax5, ax6)) = plt.subplots(2, 3, sharey='col', sharex='row', figsize=(10,4))
        f.tight_layout()
        
        ax1.set_title('Original Image', fontsize=16)
        ax1.imshow(cv2.cvtColor(undistort(image, show=False),cv2.COLOR_BGR2RGB))
        
        ax2.set_title('Warped Image', fontsize=16)
        ax2.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB).astype('uint8'))
        
        ax3.set_title('s binary threshold', fontsize=16)
        ax3.imshow(s_binary, cmap='gray')
        
        ax4.set_title('b binary threshold', fontsize=16)
        ax4.imshow(b_binary, cmap='gray')
        
        ax5.set_title('l binary threshold', fontsize=16)
        ax5.imshow(l_binary, cmap='gray')

        ax6.set_title('Combined color thresholds', fontsize=16)
        ax6.imshow(combined_binary, cmap='gray')
        
        
    else: 
        return combined_binary
In [8]:
for image in glob.glob('test_images/test*.jpg'):
    apply_thresholds(image)
In [9]:
# Define the complete image processing pipeline, reads raw image and returns binary image with lane lines identified
# (hopefully)
def pipeline(img , show=False , read=True):
    return apply_thresholds(img , show , read)

Sliding Window Polyfit

In [50]:
# Define method to fit polynomial to binary image with lines extracted, using sliding window
def sliding_window_polyfit(img):
    # Take a histogram of the bottom half of the image
    histogram = np.sum(img[img.shape[0]//2:,:], axis=0)
    # Print histogram from sliding window polyfit for example image
    plt.plot(histogram)
    plt.xlim(0, 1280)
    # Find the peak of the left and right halves of the histogram
    # These will be the starting point for the left and right lines
    midpoint = np.int(histogram.shape[0]//2)
    #print(midpoint)
    quarter_point = np.int(midpoint//2)
    #print(quarter_point)
    # Previously the left/right base was the max of the left/right half of the histogram
    # this changes it so that only a quarter of the histogram (directly to the left/right) is considered
    leftx_base = np.argmax(histogram[:midpoint])
    rightx_base = np.argmax(histogram[midpoint:]) + midpoint
    
    #print('base pts:', leftx_base, rightx_base)

    # Choose the number of sliding windows
    nwindows = 10
    # Set height of windows
    window_height = np.int(img.shape[0]/nwindows)
    # Identify the x and y positions of all nonzero pixels in the image
    nonzero = img.nonzero()
    nonzeroy = np.array(nonzero[0])
    nonzerox = np.array(nonzero[1])
    # Current positions to be updated for each window
    leftx_current = leftx_base
    rightx_current = rightx_base
    # Set the width of the windows +/- margin
    margin = 80
    # Set minimum number of pixels found to recenter window
    minpix = 40
    # Create empty lists to receive left and right lane pixel indices
    left_lane_inds = []
    right_lane_inds = []
    # Rectangle data for visualization
    rectangle_data = []

    # Step through the windows one by one
    for window in range(nwindows):
        # Identify window boundaries in x and y (and right and left)
        win_y_low = img.shape[0] - (window+1)*window_height
        win_y_high = img.shape[0] - window*window_height
        win_xleft_low = leftx_current - margin
        win_xleft_high = leftx_current + margin
        win_xright_low = rightx_current - margin
        win_xright_high = rightx_current + margin
        rectangle_data.append((win_y_low, win_y_high, win_xleft_low, win_xleft_high, win_xright_low, win_xright_high))
        # Identify the nonzero pixels in x and y within the window
        good_left_inds = ((nonzeroy >= win_y_low) & (nonzeroy < win_y_high) & (nonzerox >= win_xleft_low) & (nonzerox < win_xleft_high)).nonzero()[0]
        good_right_inds = ((nonzeroy >= win_y_low) & (nonzeroy < win_y_high) & (nonzerox >= win_xright_low) & (nonzerox < win_xright_high)).nonzero()[0]
        # Append these indices to the lists
        left_lane_inds.append(good_left_inds)
        right_lane_inds.append(good_right_inds)
        # If you found > minpix pixels, recenter next window on their mean position
        if len(good_left_inds) > minpix:
            leftx_current = np.int(np.mean(nonzerox[good_left_inds]))
        if len(good_right_inds) > minpix:        
            rightx_current = np.int(np.mean(nonzerox[good_right_inds]))

    # Concatenate the arrays of indices
    left_lane_inds = np.concatenate(left_lane_inds)
    right_lane_inds = np.concatenate(right_lane_inds)

    # Extract left and right line pixel positions
    leftx = nonzerox[left_lane_inds]
    lefty = nonzeroy[left_lane_inds] 
    rightx = nonzerox[right_lane_inds]
    righty = nonzeroy[right_lane_inds] 

    left_fit, right_fit = (None, None)
    # Fit a second order polynomial to each
    if len(leftx) != 0:
        left_fit = np.polyfit(lefty, leftx, 2)
    if len(rightx) != 0:
        right_fit = np.polyfit(righty, rightx, 2)
    
    visualization_data = (rectangle_data, histogram)
    
    return left_fit, right_fit, left_lane_inds, right_lane_inds, visualization_data
In [32]:
# visualize the result on example image
#exampleImg = cv2.imread('./test_images/test2.jpg')
exampleImg='test_images/test1.jpg'
#exampleImg = cv2.cvtColor(exampleImg, cv2.COLOR_BGR2RGB)
exampleImg_bin = apply_thresholds(exampleImg , show=False )

exampleImg = cv2.imread('test_images/test1.jpg')
exampleImg = cv2.cvtColor(exampleImg, cv2.COLOR_BGR2RGB)


        
f, (ax1, ax2) = plt.subplots(1, 2, sharey='col', sharex='row', figsize=(10,4))
f.tight_layout()
        
ax1.set_title('Original Image', fontsize=16)
ax1.imshow(exampleImg)

ax2.set_title('binary threshold Image', fontsize=16)
ax2.imshow(exampleImg_bin , 'gray')

left_fit, right_fit, left_lane_inds, right_lane_inds, visualization_data = sliding_window_polyfit(exampleImg_bin)

h = exampleImg.shape[0]
#print(left_fit)
#print(right_fit)
left_fit_x_int = left_fit[0]*h**2 + left_fit[1]*h + left_fit[2]
right_fit_x_int = right_fit[0]*h**2 + right_fit[1]*h + right_fit[2]
#print('fit x-intercepts:', left_fit_x_int, right_fit_x_int)

rectangles = visualization_data[0]
histogram = visualization_data[1]

# Create an output image to draw on and  visualize the result
out_img = np.uint8(np.dstack((exampleImg_bin, exampleImg_bin, exampleImg_bin))*255)
# Generate x and y values for plotting
ploty = np.linspace(0, exampleImg_bin.shape[0]-1, exampleImg_bin.shape[0] )
left_fitx = left_fit[0]*ploty**2 + left_fit[1]*ploty + left_fit[2]
right_fitx = right_fit[0]*ploty**2 + right_fit[1]*ploty + right_fit[2]
for rect in rectangles:
# Draw the windows on the visualization image
    cv2.rectangle(out_img,(rect[2],rect[0]),(rect[3],rect[1]),(0,255,0), 2) 
    cv2.rectangle(out_img,(rect[4],rect[0]),(rect[5],rect[1]),(0,255,0), 2) 
# Identify the x and y positions of all nonzero pixels in the image
nonzero = exampleImg_bin.nonzero()
nonzeroy = np.array(nonzero[0])
nonzerox = np.array(nonzero[1])
out_img[nonzeroy[left_lane_inds], nonzerox[left_lane_inds]] = [255, 0, 0]
out_img[nonzeroy[right_lane_inds], nonzerox[right_lane_inds]] = [100, 200, 255]
plt.imshow(out_img)
plt.plot(left_fitx, ploty, color='yellow')
plt.plot(right_fitx, ploty, color='yellow')
plt.xlim(0, 1280)
plt.ylim(720, 0)
640
320
base pts: 239 1142
Out[32]:
(720, 0)
In [34]:
# Print histogram from sliding window polyfit for example image
plt.plot(histogram)
plt.xlim(0, 1280)
print('...')
...
In [35]:
# Define method to fit polynomial to binary image based upon a previous fit (chronologically speaking);
# this assumes that the fit will not change significantly from one video frame to the next
def polyfit_using_prev_fit(binary_warped, left_fit_prev, right_fit_prev):
    nonzero = binary_warped.nonzero()
    nonzeroy = np.array(nonzero[0])
    nonzerox = np.array(nonzero[1])
    margin = 80
    left_lane_inds = ((nonzerox > (left_fit_prev[0]*(nonzeroy**2) + left_fit_prev[1]*nonzeroy + left_fit_prev[2] - margin)) & 
                      (nonzerox < (left_fit_prev[0]*(nonzeroy**2) + left_fit_prev[1]*nonzeroy + left_fit_prev[2] + margin))) 
    right_lane_inds = ((nonzerox > (right_fit_prev[0]*(nonzeroy**2) + right_fit_prev[1]*nonzeroy + right_fit_prev[2] - margin)) & 
                       (nonzerox < (right_fit_prev[0]*(nonzeroy**2) + right_fit_prev[1]*nonzeroy + right_fit_prev[2] + margin)))  

    # Again, extract left and right line pixel positions
    leftx = nonzerox[left_lane_inds]
    lefty = nonzeroy[left_lane_inds] 
    rightx = nonzerox[right_lane_inds]
    righty = nonzeroy[right_lane_inds]
    
    left_fit_new, right_fit_new = (None, None)
    if len(leftx) != 0:
        # Fit a second order polynomial to each
        left_fit_new = np.polyfit(lefty, leftx, 2)
    if len(rightx) != 0:
        right_fit_new = np.polyfit(righty, rightx, 2)
    return left_fit_new, right_fit_new, left_lane_inds, right_lane_inds
In [36]:
# visualize the result on example image
exampleImg2 = cv2.imread('test_images/test3.jpg')
exampleImg2 = cv2.cvtColor(exampleImg2, cv2.COLOR_BGR2RGB)
exampleImg2_bin = pipeline('test_images/test3.jpg')   
margin = 80
 
f, (ax1, ax2) = plt.subplots(1, 2, sharey='col', sharex='row', figsize=(10,4))
f.tight_layout()
        
ax1.set_title('Original Image', fontsize=16)
ax1.imshow(exampleImg2)

ax2.set_title('binary threshold Image', fontsize=16)
ax2.imshow(exampleImg2_bin , 'gray')

left_fit2, right_fit2, left_lane_inds2, right_lane_inds2 = polyfit_using_prev_fit(exampleImg2_bin, left_fit, right_fit)

# Generate x and y values for plotting
ploty = np.linspace(0, exampleImg2_bin.shape[0]-1, exampleImg2_bin.shape[0] )
left_fitx = left_fit[0]*ploty**2 + left_fit[1]*ploty + left_fit[2]
right_fitx = right_fit[0]*ploty**2 + right_fit[1]*ploty + right_fit[2]
left_fitx2 = left_fit2[0]*ploty**2 + left_fit2[1]*ploty + left_fit2[2]
right_fitx2 = right_fit2[0]*ploty**2 + right_fit2[1]*ploty + right_fit2[2]

# Create an image to draw on and an image to show the selection window
out_img = np.uint8(np.dstack((exampleImg2_bin, exampleImg2_bin, exampleImg2_bin))*255)
window_img = np.zeros_like(out_img)

# Color in left and right line pixels
nonzero = exampleImg2_bin.nonzero()
nonzeroy = np.array(nonzero[0])
nonzerox = np.array(nonzero[1])
out_img[nonzeroy[left_lane_inds2], nonzerox[left_lane_inds2]] = [255, 0, 0]
out_img[nonzeroy[right_lane_inds2], nonzerox[right_lane_inds2]] = [0, 0, 255]

# Generate a polygon to illustrate the search window area (OLD FIT)
# And recast the x and y points into usable format for cv2.fillPoly()
left_line_window1 = np.array([np.transpose(np.vstack([left_fitx-margin, ploty]))])
left_line_window2 = np.array([np.flipud(np.transpose(np.vstack([left_fitx+margin, ploty])))])
left_line_pts = np.hstack((left_line_window1, left_line_window2))
right_line_window1 = np.array([np.transpose(np.vstack([right_fitx-margin, ploty]))])
right_line_window2 = np.array([np.flipud(np.transpose(np.vstack([right_fitx+margin, ploty])))])
right_line_pts = np.hstack((right_line_window1, right_line_window2))

# Draw the lane onto the warped blank image
cv2.fillPoly(window_img, np.int_([left_line_pts]), (0,255, 0))
cv2.fillPoly(window_img, np.int_([right_line_pts]), (0,255, 0))
result = cv2.addWeighted(out_img, 1, window_img, 0.3, 0)
plt.imshow(result)
plt.plot(left_fitx2, ploty, color='yellow')
plt.plot(right_fitx2, ploty, color='yellow')
plt.xlim(0, 1280)
plt.ylim(720, 0)
Out[36]:
(720, 0)
In [ ]:
 

Radius of Curvature and Distance from Lane Center Calculation

In [48]:
# Method to determine radius of curvature and distance from lane center 
# based on binary image, polynomial fit, and L and R lane pixel indices
def calc_curv_rad_and_center_dist(bin_img, l_fit, r_fit, l_lane_inds, r_lane_inds):
    # Define conversions in x and y from pixels space to meters
    ym_per_pix = 3.048/100 # meters per pixel in y dimension, lane line is 10 ft = 3.048 meters
    xm_per_pix = 3.7/378 # meters per pixel in x dimension, lane width is 12 ft = 3.7 meters
    left_curverad, right_curverad, center_dist = (0, 0, 0)
    # Define y-value where we want radius of curvature
    # I'll choose the maximum y-value, corresponding to the bottom of the image
    h = bin_img.shape[0]
    ploty = np.linspace(0, h-1, h)
    y_eval = np.max(ploty)
  
    # Identify the x and y positions of all nonzero pixels in the image
    nonzero = bin_img.nonzero()
    nonzeroy = np.array(nonzero[0])
    nonzerox = np.array(nonzero[1])
    # Again, extract left and right line pixel positions
    leftx = nonzerox[l_lane_inds]
    lefty = nonzeroy[l_lane_inds] 
    rightx = nonzerox[r_lane_inds]
    righty = nonzeroy[r_lane_inds]
    
    if len(leftx) != 0 and len(rightx) != 0:
        # Fit new polynomials to x,y in world space
        left_fit_cr = np.polyfit(lefty*ym_per_pix, leftx*xm_per_pix, 2)
        right_fit_cr = np.polyfit(righty*ym_per_pix, rightx*xm_per_pix, 2)
        # Calculate the new radii of curvature
        left_curverad = ((1 + (2*left_fit_cr[0]*y_eval*ym_per_pix + left_fit_cr[1])**2)**1.5) / np.absolute(2*left_fit_cr[0])
        right_curverad = ((1 + (2*right_fit_cr[0]*y_eval*ym_per_pix + right_fit_cr[1])**2)**1.5) / np.absolute(2*right_fit_cr[0])
        # Now our radius of curvature is in meters
    
    # Distance from center is image x midpoint - mean of l_fit and r_fit intercepts 
    if r_fit is not None and l_fit is not None:
        car_position = bin_img.shape[1]/2
        l_fit_x_int = l_fit[0]*h**2 + l_fit[1]*h + l_fit[2]
        r_fit_x_int = r_fit[0]*h**2 + r_fit[1]*h + r_fit[2]
        #print( l_fit, r_fit,l_fit_x_int,r_fit_x_int,car_position)
        lane_center_position = (r_fit_x_int + l_fit_x_int) /2
        center_dist = (car_position - lane_center_position) * xm_per_pix
    return left_curverad, right_curverad, center_dist
In [38]:
rad_l, rad_r, d_center = calc_curv_rad_and_center_dist(exampleImg2_bin, left_fit2, right_fit2, left_lane_inds2, right_lane_inds2)

print('Radius of curvature for example:', rad_l, 'm,', rad_r, 'm')
print('Distance from lane center for example:', d_center, 'm')
Radius of curvature for example: 890.487693156 m, 784.788952162 m
Distance from lane center for example: -0.457241993108 m

Draw the Detected Lane Back onto the Original Image

In [39]:
def draw_lane(original_img, binary_img, l_fit, r_fit, Minv):
    new_img = np.copy(original_img)
    if l_fit is None or r_fit is None:
        return original_img
    # Create an image to draw the lines on
    warp_zero = np.zeros_like(binary_img).astype(np.uint8)
    color_warp = np.dstack((warp_zero, warp_zero, warp_zero))
    
    h,w = binary_img.shape
    ploty = np.linspace(0, h-1, num=h)# to cover same y-range as image
    left_fitx = l_fit[0]*ploty**2 + l_fit[1]*ploty + l_fit[2]
    right_fitx = r_fit[0]*ploty**2 + r_fit[1]*ploty + r_fit[2]

    # Recast the x and y points into usable format for cv2.fillPoly()
    pts_left = np.array([np.transpose(np.vstack([left_fitx, ploty]))])
    pts_right = np.array([np.flipud(np.transpose(np.vstack([right_fitx, ploty])))])
    pts = np.hstack((pts_left, pts_right))

    # Draw the lane onto the warped blank image
    cv2.fillPoly(color_warp, np.int_([pts]), (0,255, 0))
    cv2.polylines(color_warp, np.int32([pts_left]), isClosed=False, color=(255,0,255), thickness=15)
    cv2.polylines(color_warp, np.int32([pts_right]), isClosed=False, color=(0,255,255), thickness=15)

    # Warp the blank back to original image space using inverse perspective matrix (Minv)
    newwarp = cv2.warpPerspective(color_warp, Minv, (w, h)) 
    # Combine the result with the original image
    result = cv2.addWeighted(new_img, 1, newwarp, 0.5, 0)
   
    return result
In [40]:
src = np.float32([[490, 482],[810, 482],
                  [1250, 720],[40, 720]])
dst = np.float32([[0, 0], [1280, 0], 
                 [1250, 720],[40, 720]])
Minv = cv2.getPerspectiveTransform(dst, src)
exampleImg2_out1 = draw_lane(exampleImg2, exampleImg2_bin, left_fit, right_fit, Minv)

rad_l, rad_r, d_center = calc_curv_rad_and_center_dist(exampleImg2_bin, left_fit, right_fit, left_lane_inds, right_lane_inds)
print(rad_l, rad_r, d_center)
f, (ax1, ax2) = plt.subplots(1,2, figsize=(9, 6))
f.tight_layout()
       
ax1.set_title('Original Image', fontsize=16)
ax1.imshow(exampleImg2)

ax2.set_title('lane filled image', fontsize=16)
ax2.imshow(exampleImg2_out1 , 'gray')


ax2.text(200, 100, 'Distance from lane center :{} m'.format(d_center),
         style='italic', color='white', fontsize=10)
ax2.text(200, 175, 'Radius of curvature is {}m'.format(int((rad_l + rad_r)/2)),
     style='italic', color='white', fontsize=10)
38.6718202613 38.136385893 -0.598924780565
Out[40]:
<matplotlib.text.Text at 0x7f030cbc94e0>
In [ ]:
 

Draw Curvature Radius and Distance from Center Data onto the Original Image

In [55]:
def fill_lane(image , display= True , read=True):
    
    # visualize the result on example image
    if read :
        exampleImg = cv2.imread(image)
        exampleImg = cv2.cvtColor(exampleImg, cv2.COLOR_BGR2RGB)
        exampleImg_bin = pipeline(image , show=False , read=True) 
        left_fit, right_fit, left_lane_inds, right_lane_inds, visualization_data = sliding_window_polyfit(exampleImg_bin)

    else:
        exampleImg = image
        exampleImg = cv2.cvtColor(exampleImg ,cv2.COLOR_BGR2RGB)
        exampleImg_bin = pipeline(exampleImg , show=False , read=False) 
        exampleImg = image
        global left_fit, right_fit, left_lane_inds, right_lane_inds, visualization_data
        left_fit, right_fit, left_lane_inds, right_lane_inds, visualization_data = sliding_window_polyfit(exampleImg_bin)
        if left_fit is None or right_fit is None:
            print(left_fit, right_fit, left_lane_inds, right_lane_inds)
            plt.imshow(exampleImg )
            return image
    margin = 20

    
    #h = exampleImg.shape[0]
    #print(exampleImg.shape)
    #print(exampleImg_bin)
    #print(left_fit, right_fit, left_lane_inds, right_lane_inds)
    h = exampleImg.shape[0]
    w = exampleImg.shape[1]
    
  
    # Create an output image to draw on and  visualize the result
    out_img = np.uint8(np.dstack((exampleImg_bin, exampleImg_bin, exampleImg_bin))*255)
    window_img = np.zeros_like(out_img)
    warp_zero = np.zeros_like(exampleImg_bin).astype(np.uint8)
    color_warp = np.dstack((warp_zero, warp_zero, warp_zero))
        
    # Generate x and y values for plotting
    ploty = np.linspace(0, exampleImg_bin.shape[0]-1, exampleImg_bin.shape[0] )
    left_fitx = left_fit[0]*ploty**2 + left_fit[1]*ploty + left_fit[2]
    right_fitx = right_fit[0]*ploty**2 + right_fit[1]*ploty + right_fit[2]



    nonzero = exampleImg_bin.nonzero()
    nonzeroy = np.array(nonzero[0])
    nonzerox = np.array(nonzero[1])
    out_img[nonzeroy[left_lane_inds], nonzerox[left_lane_inds]] = [255, 0, 0]
    out_img[nonzeroy[right_lane_inds], nonzerox[right_lane_inds]] = [100, 200, 255]
    

    # Recast the x and y points into usable format for cv2.fillPoly()
    pts_left = np.array([np.transpose(np.vstack([left_fitx, ploty]))])
    pts_right = np.array([np.flipud(np.transpose(np.vstack([right_fitx, ploty])))])
    pts = np.hstack((pts_left, pts_right))

    # Draw the lane onto the warped blank image
    cv2.fillPoly(color_warp, np.int_([pts]), (0,255, 0))
    cv2.polylines(color_warp, np.int32([pts_left]), isClosed=False, color=(255,0,255), thickness=15)
    cv2.polylines(color_warp, np.int32([pts_right]), isClosed=False, color=(0,255,255), thickness=15)

    
    src = np.float32([[490, 482],[810, 482],
                  [1250, 720],[40, 720]])
    dst = np.float32([[0, 0], [1280, 0], 
                     [1250, 720],[40, 720]])
    Minv = cv2.getPerspectiveTransform(dst, src)
    
    # Warp the blank back to original image space using inverse perspective matrix (Minv)
    newwarp = cv2.warpPerspective(color_warp, Minv, (w, h)) 
    # Combine the result with the original image
    exampleImg_out1 = cv2.addWeighted(exampleImg, 1, newwarp, 0.5, 0)
   
   

    #exampleImg_out1 = draw_lane(exampleImg, exampleImg_bin, left_fitx, right_fitx, Minv)

    rad_l, rad_r, d_center = calc_curv_rad_and_center_dist(exampleImg_bin, left_fit, right_fit, left_lane_inds, right_lane_inds)
    #print(rad_l, rad_r, d_center)
    if display == True:
          #print( left_fit, right_fit, left_lane_inds, right_lane_inds)
        rectangles = visualization_data[0]
        histogram = visualization_data[1]


        f, (ax1, ax2 ,ax3) = plt.subplots(1,3, figsize=(9, 6))
        f.tight_layout()

        ax1.set_title('Original Image', fontsize=16)
        ax1.imshow(exampleImg)

        ax2.set_title('lane filled image', fontsize=16)
        ax2.imshow(exampleImg_out1 , 'gray')


        ax2.text(200, 100, 'Distance from lane center :{} m'.format(d_center),
                 style='italic', color='white', fontsize=10)
        ax2.text(200, 175, 'Radius of curvature is {}m'.format(int((rad_l + rad_r)/2)),
             style='italic', color='white', fontsize=10)

        ax3.set_title('binary poly fit', fontsize=16)
        ax3.imshow(window_img , 'gray')
        ax3.plot(left_fitx, ploty, color='yellow')
        ax3.plot(right_fitx, ploty, color='yellow')
    else:
        #print( rad_l, rad_r, d_center )
        str1='Distance from lane center :{} m'.format(d_center)
        str2='Radius of curvature is {}m'.format(int((rad_l + rad_r)/2))
        texted_image1 =cv2.putText(img=np.copy(exampleImg_out1), text=str1, org=(0,50),fontFace=3, fontScale=1, color=(0,0,255), thickness=2)
        texted_image2 =cv2.putText(img=np.copy(texted_image1), text=str2, org=(0,120),fontFace=3, fontScale=1, color=(0,0,255), thickness=2)
        return texted_image2

Step 7: Output visual display of the lane boundaries and numerical estimation of lane curvature and vehicle position.

In [47]:
for image in glob.glob('test_images/test*.jpg'):
    fill_lane(image)
(720, 1280, 3)
[  6.27445200e-05  -1.97761141e-01   3.64860033e+02] [  7.17807742e-05   5.71968816e-02   1.10863335e+03] [31082 31083 31084 ...,  3687  3688  3689] [28565 28566 28567 ..., 12166 12167 12168]
(720, 1280, 3)
[  1.09715172e-04  -1.79914375e-01   2.45570535e+02] [  3.79470986e-05   6.74978206e-02   1.06669100e+03] [25050 25051 25052 ...,   988   989   990] [21237 21238 21239 ...,    12    13    14]
(720, 1280, 3)
[  1.29707204e-04  -1.52142072e-01   2.91925942e+02] [ -4.56600799e-05   1.41784381e-01   1.07433647e+03] [28451 28452 28453 ...,  4833  4834  4835] [28536 28537 28538 ...,  4859  4860  4861]
(720, 1280, 3)
[  5.34069561e-05  -1.94858851e-01   3.44298274e+02] [  6.06495401e-05   5.14431395e-02   1.07325981e+03] [32530 32531 32532 ...,  4530  4531  4532] [32556 32557 32558 ...,  4544  4545  4546]
(720, 1280, 3)
[ -9.70147147e-05   1.04525120e-01   2.64265191e+02] [  8.34771801e-05   2.55534863e-01   1.01037034e+03] [27149 27150 27151 ...,  3084  3085  3086] [23693 23694 23720 ...,  6149  6150  6151]
(720, 1280, 3)
[ -3.96991678e-05  -1.88905016e-02   2.95009276e+02] [ -1.65706360e-04   3.39913467e-01   1.02759337e+03] [29955 29956 29957 ...,  3142  3143  3144] [28879 28880 28881 ..., 13304 13305 13306]

Video Processing Pipeline:

In [20]:
# Import everything needed to edit/save/watch video clips
from moviepy.editor import VideoFileClip
from IPython.display import HTML
In [21]:
def process_video_image(image):
    return fill_lane(image , display= False , read=False)

write images from video to analyse

In [53]:
video_output1 = 'project_video_output.mp4'
video_input1 = VideoFileClip('project_video.mp4')#.subclip(10,20)#.subclip(22,26)
#video_input1.to_images_sequence("tmp_images/images%03d.jpeg")
In [52]:
for image in glob.glob('tmp_images/images*.jpeg'):
    fill_lane(image)
    break
In [ ]:
#process_video_image('tmp_images/images000.jpeg')
video_input1.fl_image(process_video_image).to_images_sequence("tmp_output_images/images%03d.jpeg")
In [56]:
video_output1 = 'project_video_output.mp4'
video_input1 = VideoFileClip('project_video.mp4')#.subclip(22,26)#.subclip(22,26)
processed_video = video_input1.fl_image(process_video_image)
%time processed_video.write_videofile(video_output1, audio=False)
[MoviePy] >>>> Building video project_video_output.mp4
[MoviePy] Writing video project_video_output.mp4
  0%|          | 0/1261 [00:00<?, ?it/s]
  0%|          | 1/1261 [00:00<16:31,  1.27it/s]
  0%|          | 2/1261 [00:01<16:32,  1.27it/s]
  0%|          | 3/1261 [00:02<16:33,  1.27it/s]
  0%|          | 4/1261 [00:03<16:27,  1.27it/s]
  0%|          | 5/1261 [00:03<16:03,  1.30it/s]
  0%|          | 6/1261 [00:04<16:03,  1.30it/s]
  1%|          | 7/1261 [00:05<16:12,  1.29it/s]
  1%|          | 8/1261 [00:06<16:19,  1.28it/s]
  1%|          | 9/1261 [00:06<16:02,  1.30it/s]
  1%|          | 10/1261 [00:07<16:15,  1.28it/s]
  1%|          | 11/1261 [00:08<16:14,  1.28it/s]
  1%|          | 12/1261 [00:09<16:18,  1.28it/s]
  1%|          | 13/1261 [00:10<15:46,  1.32it/s]
  1%|          | 14/1261 [00:10<15:48,  1.31it/s]
  1%|          | 15/1261 [00:11<16:18,  1.27it/s]
  1%|▏         | 16/1261 [00:12<16:17,  1.27it/s]
  1%|▏         | 17/1261 [00:13<16:04,  1.29it/s]
  1%|▏         | 18/1261 [00:14<16:16,  1.27it/s]
  2%|▏         | 19/1261 [00:14<15:54,  1.30it/s]
  2%|▏         | 20/1261 [00:15<16:09,  1.28it/s]
  2%|▏         | 21/1261 [00:16<16:16,  1.27it/s]
  2%|▏         | 22/1261 [00:17<16:08,  1.28it/s]
  2%|▏         | 23/1261 [00:17<16:04,  1.28it/s]
  2%|▏         | 24/1261 [00:18<15:56,  1.29it/s]
  2%|▏         | 25/1261 [00:19<16:04,  1.28it/s]
  2%|▏         | 26/1261 [00:20<16:28,  1.25it/s]
  2%|▏         | 27/1261 [00:21<16:25,  1.25it/s]
  2%|▏         | 28/1261 [00:21<15:48,  1.30it/s]
  2%|▏         | 29/1261 [00:22<15:36,  1.31it/s]
  2%|▏         | 30/1261 [00:23<15:46,  1.30it/s]
  2%|▏         | 31/1261 [00:24<15:22,  1.33it/s]
  3%|▎         | 32/1261 [00:24<16:12,  1.26it/s]
  3%|▎         | 33/1261 [00:25<16:11,  1.26it/s]
  3%|▎         | 34/1261 [00:26<16:16,  1.26it/s]
  3%|▎         | 35/1261 [00:27<16:08,  1.27it/s]
  3%|▎         | 36/1261 [00:27<15:36,  1.31it/s]
  3%|▎         | 37/1261 [00:28<15:19,  1.33it/s]
  3%|▎         | 38/1261 [00:29<15:27,  1.32it/s]
  3%|▎         | 39/1261 [00:30<15:08,  1.35it/s]
  3%|▎         | 40/1261 [00:30<15:00,  1.36it/s]
  3%|▎         | 41/1261 [00:31<15:22,  1.32it/s]
  3%|▎         | 42/1261 [00:32<15:33,  1.31it/s]
  3%|▎         | 43/1261 [00:33<16:07,  1.26it/s]
  3%|▎         | 44/1261 [00:34<15:54,  1.27it/s]
  4%|▎         | 45/1261 [00:34<15:57,  1.27it/s]
  4%|▎         | 46/1261 [00:35<16:44,  1.21it/s]
  4%|▎         | 47/1261 [00:36<16:29,  1.23it/s]
  4%|▍         | 48/1261 [00:37<16:39,  1.21it/s]
  4%|▍         | 49/1261 [00:38<16:38,  1.21it/s]
  4%|▍         | 50/1261 [00:39<16:33,  1.22it/s]
  4%|▍         | 51/1261 [00:39<16:03,  1.26it/s]
  4%|▍         | 52/1261 [00:40<15:51,  1.27it/s]
  4%|▍         | 53/1261 [00:41<15:27,  1.30it/s]
  4%|▍         | 54/1261 [00:42<15:34,  1.29it/s]
  4%|▍         | 55/1261 [00:42<15:28,  1.30it/s]
  4%|▍         | 56/1261 [00:43<15:28,  1.30it/s]
  5%|▍         | 57/1261 [00:44<15:22,  1.30it/s]
  5%|▍         | 58/1261 [00:45<16:10,  1.24it/s]
  5%|▍         | 59/1261 [00:46<15:59,  1.25it/s]
  5%|▍         | 60/1261 [00:46<15:55,  1.26it/s]
  5%|▍         | 61/1261 [00:47<16:19,  1.22it/s]
  5%|▍         | 62/1261 [00:48<16:28,  1.21it/s]
  5%|▍         | 63/1261 [00:49<16:42,  1.20it/s]
  5%|▌         | 64/1261 [00:50<16:57,  1.18it/s]
  5%|▌         | 65/1261 [00:51<16:45,  1.19it/s]
  5%|▌         | 66/1261 [00:51<16:29,  1.21it/s]
  5%|▌         | 67/1261 [00:52<16:21,  1.22it/s]
  5%|▌         | 68/1261 [00:53<15:45,  1.26it/s]
  5%|▌         | 69/1261 [00:54<15:56,  1.25it/s]
  6%|▌         | 70/1261 [00:55<16:14,  1.22it/s]
  6%|▌         | 71/1261 [00:55<15:46,  1.26it/s]
  6%|▌         | 72/1261 [00:56<15:55,  1.24it/s]
  6%|▌         | 73/1261 [00:57<15:34,  1.27it/s]
  6%|▌         | 74/1261 [00:58<15:37,  1.27it/s]
  6%|▌         | 75/1261 [00:59<15:32,  1.27it/s]
  6%|▌         | 76/1261 [00:59<15:23,  1.28it/s]
  6%|▌         | 77/1261 [01:00<15:26,  1.28it/s]
  6%|▌         | 78/1261 [01:01<15:01,  1.31it/s]
  6%|▋         | 79/1261 [01:02<14:47,  1.33it/s]
  6%|▋         | 80/1261 [01:02<15:18,  1.29it/s]
  6%|▋         | 81/1261 [01:03<15:28,  1.27it/s]
  7%|▋         | 82/1261 [01:04<15:05,  1.30it/s]
  7%|▋         | 83/1261 [01:05<15:06,  1.30it/s]
  7%|▋         | 84/1261 [01:05<15:14,  1.29it/s]
  7%|▋         | 85/1261 [01:06<15:16,  1.28it/s]
  7%|▋         | 86/1261 [01:07<15:19,  1.28it/s]
  7%|▋         | 87/1261 [01:08<15:17,  1.28it/s]
  7%|▋         | 88/1261 [01:09<16:02,  1.22it/s]
  7%|▋         | 89/1261 [01:09<15:32,  1.26it/s]
  7%|▋         | 90/1261 [01:10<15:10,  1.29it/s]
  7%|▋         | 91/1261 [01:11<15:01,  1.30it/s]
  7%|▋         | 92/1261 [01:12<14:49,  1.31it/s]
  7%|▋         | 93/1261 [01:12<14:46,  1.32it/s]
  7%|▋         | 94/1261 [01:13<15:06,  1.29it/s]
  8%|▊         | 95/1261 [01:14<15:04,  1.29it/s]
  8%|▊         | 96/1261 [01:15<15:10,  1.28it/s]
  8%|▊         | 97/1261 [01:16<14:59,  1.29it/s]
  8%|▊         | 98/1261 [01:16<14:47,  1.31it/s]
  8%|▊         | 99/1261 [01:17<14:44,  1.31it/s]
  8%|▊         | 100/1261 [01:18<15:25,  1.25it/s]
  8%|▊         | 101/1261 [01:19<15:11,  1.27it/s]
  8%|▊         | 102/1261 [01:19<14:57,  1.29it/s]
  8%|▊         | 103/1261 [01:20<14:37,  1.32it/s]
  8%|▊         | 104/1261 [01:21<14:19,  1.35it/s]
  8%|▊         | 105/1261 [01:22<14:02,  1.37it/s]
  8%|▊         | 106/1261 [01:22<14:19,  1.34it/s]
  8%|▊         | 107/1261 [01:23<14:13,  1.35it/s]
  9%|▊         | 108/1261 [01:24<14:18,  1.34it/s]
  9%|▊         | 109/1261 [01:25<14:11,  1.35it/s]
  9%|▊         | 110/1261 [01:25<13:58,  1.37it/s]
  9%|▉         | 111/1261 [01:26<14:07,  1.36it/s]
  9%|▉         | 112/1261 [01:27<13:57,  1.37it/s]
  9%|▉         | 113/1261 [01:28<13:56,  1.37it/s]
  9%|▉         | 114/1261 [01:28<14:15,  1.34it/s]
  9%|▉         | 115/1261 [01:29<14:06,  1.35it/s]
  9%|▉         | 116/1261 [01:30<14:01,  1.36it/s]
  9%|▉         | 117/1261 [01:31<14:15,  1.34it/s]
  9%|▉         | 118/1261 [01:31<14:05,  1.35it/s]
  9%|▉         | 119/1261 [01:32<14:17,  1.33it/s]
 10%|▉         | 120/1261 [01:33<14:00,  1.36it/s]
 10%|▉         | 121/1261 [01:33<14:07,  1.34it/s]
 10%|▉         | 122/1261 [01:34<13:56,  1.36it/s]
 10%|▉         | 123/1261 [01:35<14:02,  1.35it/s]
 10%|▉         | 124/1261 [01:36<14:01,  1.35it/s]
 10%|▉         | 125/1261 [01:36<14:15,  1.33it/s]
 10%|▉         | 126/1261 [01:37<14:20,  1.32it/s]
 10%|█         | 127/1261 [01:38<14:28,  1.31it/s]
 10%|█         | 128/1261 [01:39<14:29,  1.30it/s]
 10%|█         | 129/1261 [01:40<14:37,  1.29it/s]
 10%|█         | 130/1261 [01:40<14:29,  1.30it/s]
 10%|█         | 131/1261 [01:41<14:32,  1.30it/s]
 10%|█         | 132/1261 [01:42<14:10,  1.33it/s]
 11%|█         | 133/1261 [01:43<14:17,  1.32it/s]
 11%|█         | 134/1261 [01:43<13:59,  1.34it/s]
 11%|█         | 135/1261 [01:44<13:54,  1.35it/s]
 11%|█         | 136/1261 [01:45<13:40,  1.37it/s]
 11%|█         | 137/1261 [01:45<13:46,  1.36it/s]
 11%|█         | 138/1261 [01:46<13:54,  1.35it/s]
 11%|█         | 139/1261 [01:47<14:14,  1.31it/s]
 11%|█         | 140/1261 [01:48<14:21,  1.30it/s]
 11%|█         | 141/1261 [01:49<14:23,  1.30it/s]
 11%|█▏        | 142/1261 [01:50<15:07,  1.23it/s]
 11%|█▏        | 143/1261 [01:50<14:53,  1.25it/s]
 11%|█▏        | 144/1261 [01:51<14:36,  1.27it/s]
 11%|█▏        | 145/1261 [01:52<14:27,  1.29it/s]
 12%|█▏        | 146/1261 [01:53<14:31,  1.28it/s]
 12%|█▏        | 147/1261 [01:53<14:27,  1.28it/s]
 12%|█▏        | 148/1261 [01:54<14:27,  1.28it/s]
 12%|█▏        | 149/1261 [01:55<14:28,  1.28it/s]
 12%|█▏        | 150/1261 [01:56<14:41,  1.26it/s]
 12%|█▏        | 151/1261 [01:57<14:33,  1.27it/s]
 12%|█▏        | 152/1261 [01:57<14:12,  1.30it/s]
 12%|█▏        | 153/1261 [01:58<13:47,  1.34it/s]
 12%|█▏        | 154/1261 [01:59<13:49,  1.33it/s]
 12%|█▏        | 155/1261 [01:59<13:55,  1.32it/s]
 12%|█▏        | 156/1261 [02:00<13:55,  1.32it/s]
 12%|█▏        | 157/1261 [02:01<13:42,  1.34it/s]
 13%|█▎        | 158/1261 [02:02<13:53,  1.32it/s]
 13%|█▎        | 159/1261 [02:02<13:50,  1.33it/s]
 13%|█▎        | 160/1261 [02:03<13:32,  1.36it/s]
 13%|█▎        | 161/1261 [02:04<13:34,  1.35it/s]
 13%|█▎        | 162/1261 [02:05<13:22,  1.37it/s]
 13%|█▎        | 163/1261 [02:05<13:30,  1.36it/s]
 13%|█▎        | 164/1261 [02:06<13:32,  1.35it/s]
 13%|█▎        | 165/1261 [02:07<13:48,  1.32it/s]
 13%|█▎        | 166/1261 [02:08<13:58,  1.31it/s]
 13%|█▎        | 167/1261 [02:09<14:07,  1.29it/s]
 13%|█▎        | 168/1261 [02:09<13:43,  1.33it/s]
 13%|█▎        | 169/1261 [02:10<13:27,  1.35it/s]
 13%|█▎        | 170/1261 [02:11<13:08,  1.38it/s]
 14%|█▎        | 171/1261 [02:11<13:37,  1.33it/s]
 14%|█▎        | 172/1261 [02:12<13:46,  1.32it/s]
 14%|█▎        | 173/1261 [02:13<13:45,  1.32it/s]
 14%|█▍        | 174/1261 [02:14<13:52,  1.31it/s]
 14%|█▍        | 175/1261 [02:14<13:43,  1.32it/s]
 14%|█▍        | 176/1261 [02:15<13:28,  1.34it/s]
 14%|█▍        | 177/1261 [02:16<13:39,  1.32it/s]
 14%|█▍        | 178/1261 [02:17<13:16,  1.36it/s]
 14%|█▍        | 179/1261 [02:17<13:30,  1.34it/s]
 14%|█▍        | 180/1261 [02:18<13:40,  1.32it/s]
 14%|█▍        | 181/1261 [02:19<13:48,  1.30it/s]
 14%|█▍        | 182/1261 [02:20<13:47,  1.30it/s]
 15%|█▍        | 183/1261 [02:21<13:55,  1.29it/s]
 15%|█▍        | 184/1261 [02:21<13:51,  1.30it/s]
 15%|█▍        | 185/1261 [02:22<14:01,  1.28it/s]
 15%|█▍        | 186/1261 [02:23<14:32,  1.23it/s]
 15%|█▍        | 187/1261 [02:24<14:18,  1.25it/s]
 15%|█▍        | 188/1261 [02:25<13:47,  1.30it/s]
 15%|█▍        | 189/1261 [02:25<13:27,  1.33it/s]
 15%|█▌        | 190/1261 [02:26<13:29,  1.32it/s]
 15%|█▌        | 191/1261 [02:27<14:24,  1.24it/s]
 15%|█▌        | 192/1261 [02:28<13:58,  1.28it/s]
 15%|█▌        | 193/1261 [02:28<13:58,  1.27it/s]
 15%|█▌        | 194/1261 [02:29<14:03,  1.26it/s]
 15%|█▌        | 195/1261 [02:30<13:49,  1.29it/s]
 16%|█▌        | 196/1261 [02:31<13:28,  1.32it/s]
 16%|█▌        | 197/1261 [02:31<13:13,  1.34it/s]
 16%|█▌        | 198/1261 [02:32<13:05,  1.35it/s]
 16%|█▌        | 199/1261 [02:33<12:54,  1.37it/s]
 16%|█▌        | 200/1261 [02:34<13:12,  1.34it/s]
 16%|█▌        | 201/1261 [02:34<13:10,  1.34it/s]
 16%|█▌        | 202/1261 [02:35<13:30,  1.31it/s]
 16%|█▌        | 203/1261 [02:36<13:20,  1.32it/s]
 16%|█▌        | 204/1261 [02:37<13:29,  1.31it/s]
 16%|█▋        | 205/1261 [02:37<13:11,  1.33it/s]
 16%|█▋        | 206/1261 [02:38<13:22,  1.31it/s]
 16%|█▋        | 207/1261 [02:39<13:27,  1.31it/s]
 16%|█▋        | 208/1261 [02:40<13:27,  1.30it/s]
 17%|█▋        | 209/1261 [02:41<13:26,  1.30it/s]
 17%|█▋        | 210/1261 [02:41<13:17,  1.32it/s]
 17%|█▋        | 211/1261 [02:42<13:24,  1.30it/s]
 17%|█▋        | 212/1261 [02:43<13:37,  1.28it/s]
 17%|█▋        | 213/1261 [02:44<13:36,  1.28it/s]
 17%|█▋        | 214/1261 [02:44<13:38,  1.28it/s]
 17%|█▋        | 215/1261 [02:45<13:17,  1.31it/s]
 17%|█▋        | 216/1261 [02:46<13:01,  1.34it/s]
 17%|█▋        | 217/1261 [02:47<13:14,  1.31it/s]
 17%|█▋        | 218/1261 [02:47<13:14,  1.31it/s]
 17%|█▋        | 219/1261 [02:48<13:22,  1.30it/s]
 17%|█▋        | 220/1261 [02:49<12:57,  1.34it/s]
 18%|█▊        | 221/1261 [02:50<13:03,  1.33it/s]
 18%|█▊        | 222/1261 [02:50<12:44,  1.36it/s]
 18%|█▊        | 223/1261 [02:51<12:47,  1.35it/s]
 18%|█▊        | 224/1261 [02:52<12:35,  1.37it/s]
 18%|█▊        | 225/1261 [02:53<12:54,  1.34it/s]
 18%|█▊        | 226/1261 [02:53<12:49,  1.34it/s]
 18%|█▊        | 227/1261 [02:54<12:38,  1.36it/s]
 18%|█▊        | 228/1261 [02:55<12:41,  1.36it/s]
 18%|█▊        | 229/1261 [02:55<12:29,  1.38it/s]
 18%|█▊        | 230/1261 [02:56<13:42,  1.25it/s]
 18%|█▊        | 231/1261 [02:57<13:36,  1.26it/s]
 18%|█▊        | 232/1261 [02:58<13:19,  1.29it/s]
 18%|█▊        | 233/1261 [02:59<13:00,  1.32it/s]
 19%|█▊        | 234/1261 [02:59<13:03,  1.31it/s]
 19%|█▊        | 235/1261 [03:00<13:45,  1.24it/s]
 19%|█▊        | 236/1261 [03:01<13:30,  1.27it/s]
 19%|█▉        | 237/1261 [03:02<13:25,  1.27it/s]
 19%|█▉        | 238/1261 [03:03<13:07,  1.30it/s]
 19%|█▉        | 239/1261 [03:03<12:57,  1.31it/s]
 19%|█▉        | 240/1261 [03:04<13:06,  1.30it/s]
 19%|█▉        | 241/1261 [03:05<13:14,  1.28it/s]
 19%|█▉        | 242/1261 [03:06<12:49,  1.32it/s]
 19%|█▉        | 243/1261 [03:06<12:59,  1.31it/s]
 19%|█▉        | 244/1261 [03:07<12:45,  1.33it/s]
 19%|█▉        | 245/1261 [03:08<12:51,  1.32it/s]
 20%|█▉        | 246/1261 [03:09<12:32,  1.35it/s]
 20%|█▉        | 247/1261 [03:09<12:39,  1.33it/s]
 20%|█▉        | 248/1261 [03:10<12:22,  1.36it/s]
 20%|█▉        | 249/1261 [03:11<12:23,  1.36it/s]
 20%|█▉        | 250/1261 [03:12<12:34,  1.34it/s]
 20%|█▉        | 251/1261 [03:12<12:46,  1.32it/s]
 20%|█▉        | 252/1261 [03:13<13:11,  1.27it/s]
 20%|██        | 253/1261 [03:14<13:24,  1.25it/s]
 20%|██        | 254/1261 [03:15<13:22,  1.25it/s]
 20%|██        | 255/1261 [03:16<12:54,  1.30it/s]
 20%|██        | 256/1261 [03:16<12:53,  1.30it/s]
 20%|██        | 257/1261 [03:17<13:00,  1.29it/s]
 20%|██        | 258/1261 [03:18<12:39,  1.32it/s]
 21%|██        | 259/1261 [03:19<12:41,  1.32it/s]
 21%|██        | 260/1261 [03:20<13:22,  1.25it/s]
 21%|██        | 261/1261 [03:20<12:47,  1.30it/s]
 21%|██        | 262/1261 [03:21<12:28,  1.33it/s]
 21%|██        | 263/1261 [03:22<12:37,  1.32it/s]
 21%|██        | 264/1261 [03:23<13:27,  1.23it/s]
 21%|██        | 265/1261 [03:23<13:19,  1.25it/s]
 21%|██        | 266/1261 [03:24<13:04,  1.27it/s]
 21%|██        | 267/1261 [03:25<13:02,  1.27it/s]
 21%|██▏       | 268/1261 [03:26<13:10,  1.26it/s]
 21%|██▏       | 269/1261 [03:27<13:16,  1.25it/s]
 21%|██▏       | 270/1261 [03:27<13:11,  1.25it/s]
 21%|██▏       | 271/1261 [03:28<12:45,  1.29it/s]
 22%|██▏       | 272/1261 [03:29<12:34,  1.31it/s]
 22%|██▏       | 273/1261 [03:30<12:24,  1.33it/s]
 22%|██▏       | 274/1261 [03:30<12:12,  1.35it/s]
 22%|██▏       | 275/1261 [03:31<12:13,  1.34it/s]
 22%|██▏       | 276/1261 [03:32<12:04,  1.36it/s]
 22%|██▏       | 277/1261 [03:33<12:10,  1.35it/s]
 22%|██▏       | 278/1261 [03:33<12:17,  1.33it/s]
 22%|██▏       | 279/1261 [03:34<12:05,  1.35it/s]
 22%|██▏       | 280/1261 [03:35<12:15,  1.33it/s]
 22%|██▏       | 281/1261 [03:36<12:23,  1.32it/s]
 22%|██▏       | 282/1261 [03:36<12:10,  1.34it/s]
 22%|██▏       | 283/1261 [03:37<12:04,  1.35it/s]
 23%|██▎       | 284/1261 [03:38<12:09,  1.34it/s]
 23%|██▎       | 285/1261 [03:39<12:48,  1.27it/s]
 23%|██▎       | 286/1261 [03:39<12:39,  1.28it/s]
 23%|██▎       | 287/1261 [03:40<12:26,  1.30it/s]
 23%|██▎       | 288/1261 [03:41<12:25,  1.31it/s]
 23%|██▎       | 289/1261 [03:42<12:18,  1.32it/s]
 23%|██▎       | 290/1261 [03:42<12:31,  1.29it/s]
 23%|██▎       | 291/1261 [03:43<12:35,  1.28it/s]
 23%|██▎       | 292/1261 [03:44<12:15,  1.32it/s]
 23%|██▎       | 293/1261 [03:45<12:28,  1.29it/s]
 23%|██▎       | 294/1261 [03:45<12:14,  1.32it/s]
 23%|██▎       | 295/1261 [03:46<11:59,  1.34it/s]
 23%|██▎       | 296/1261 [03:47<11:51,  1.36it/s]
 24%|██▎       | 297/1261 [03:48<11:43,  1.37it/s]
 24%|██▎       | 298/1261 [03:48<11:37,  1.38it/s]
 24%|██▎       | 299/1261 [03:49<11:39,  1.38it/s]
 24%|██▍       | 300/1261 [03:50<11:49,  1.36it/s]
 24%|██▍       | 301/1261 [03:51<11:36,  1.38it/s]
 24%|██▍       | 302/1261 [03:51<11:46,  1.36it/s]
 24%|██▍       | 303/1261 [03:52<11:59,  1.33it/s]
 24%|██▍       | 304/1261 [03:53<11:45,  1.36it/s]
 24%|██▍       | 305/1261 [03:54<11:45,  1.36it/s]
 24%|██▍       | 306/1261 [03:54<11:40,  1.36it/s]
 24%|██▍       | 307/1261 [03:55<11:44,  1.35it/s]
 24%|██▍       | 308/1261 [03:56<12:12,  1.30it/s]
 25%|██▍       | 309/1261 [03:57<12:24,  1.28it/s]
 25%|██▍       | 310/1261 [03:57<12:01,  1.32it/s]
 25%|██▍       | 311/1261 [03:58<12:03,  1.31it/s]
 25%|██▍       | 312/1261 [03:59<12:02,  1.31it/s]
 25%|██▍       | 313/1261 [04:00<12:09,  1.30it/s]
 25%|██▍       | 314/1261 [04:00<12:09,  1.30it/s]
 25%|██▍       | 315/1261 [04:01<11:57,  1.32it/s]
 25%|██▌       | 316/1261 [04:02<11:56,  1.32it/s]
 25%|██▌       | 317/1261 [04:03<11:45,  1.34it/s]
 25%|██▌       | 318/1261 [04:03<11:58,  1.31it/s]
 25%|██▌       | 319/1261 [04:04<11:52,  1.32it/s]
 25%|██▌       | 320/1261 [04:05<11:49,  1.33it/s]
 25%|██▌       | 321/1261 [04:06<11:41,  1.34it/s]
 26%|██▌       | 322/1261 [04:06<11:23,  1.37it/s]
 26%|██▌       | 323/1261 [04:07<11:24,  1.37it/s]
 26%|██▌       | 324/1261 [04:08<11:26,  1.37it/s]
 26%|██▌       | 325/1261 [04:09<11:35,  1.35it/s]
 26%|██▌       | 326/1261 [04:09<11:29,  1.36it/s]
 26%|██▌       | 327/1261 [04:10<11:31,  1.35it/s]
 26%|██▌       | 328/1261 [04:11<11:52,  1.31it/s]
 26%|██▌       | 329/1261 [04:12<11:55,  1.30it/s]
 26%|██▌       | 330/1261 [04:13<12:29,  1.24it/s]
 26%|██▌       | 331/1261 [04:13<12:11,  1.27it/s]
 26%|██▋       | 332/1261 [04:14<11:56,  1.30it/s]
 26%|██▋       | 333/1261 [04:15<12:45,  1.21it/s]
 26%|██▋       | 334/1261 [04:16<12:30,  1.24it/s]
 27%|██▋       | 335/1261 [04:17<12:34,  1.23it/s]
 27%|██▋       | 336/1261 [04:17<12:17,  1.25it/s]
 27%|██▋       | 337/1261 [04:18<11:51,  1.30it/s]
 27%|██▋       | 338/1261 [04:19<11:44,  1.31it/s]
 27%|██▋       | 339/1261 [04:20<11:53,  1.29it/s]
 27%|██▋       | 340/1261 [04:20<12:01,  1.28it/s]
 27%|██▋       | 341/1261 [04:21<11:59,  1.28it/s]
 27%|██▋       | 342/1261 [04:22<12:03,  1.27it/s]
 27%|██▋       | 343/1261 [04:23<12:02,  1.27it/s]
 27%|██▋       | 344/1261 [04:24<11:51,  1.29it/s]
 27%|██▋       | 345/1261 [04:24<11:39,  1.31it/s]
 27%|██▋       | 346/1261 [04:25<11:49,  1.29it/s]
 28%|██▊       | 347/1261 [04:26<12:10,  1.25it/s]
 28%|██▊       | 348/1261 [04:27<11:50,  1.29it/s]
 28%|██▊       | 349/1261 [04:27<11:30,  1.32it/s]
 28%|██▊       | 350/1261 [04:28<11:38,  1.30it/s]
 28%|██▊       | 351/1261 [04:29<11:25,  1.33it/s]
 28%|██▊       | 352/1261 [04:30<11:20,  1.34it/s]
 28%|██▊       | 353/1261 [04:30<11:16,  1.34it/s]
 28%|██▊       | 354/1261 [04:31<11:25,  1.32it/s]
 28%|██▊       | 355/1261 [04:32<11:08,  1.36it/s]
 28%|██▊       | 356/1261 [04:33<11:05,  1.36it/s]
 28%|██▊       | 357/1261 [04:33<11:17,  1.33it/s]
 28%|██▊       | 358/1261 [04:34<11:18,  1.33it/s]
 28%|██▊       | 359/1261 [04:35<11:05,  1.36it/s]
 29%|██▊       | 360/1261 [04:36<12:14,  1.23it/s]
 29%|██▊       | 361/1261 [04:37<12:10,  1.23it/s]
 29%|██▊       | 362/1261 [04:37<12:06,  1.24it/s]
 29%|██▉       | 363/1261 [04:38<11:50,  1.26it/s]
 29%|██▉       | 364/1261 [04:39<12:26,  1.20it/s]
 29%|██▉       | 365/1261 [04:40<12:19,  1.21it/s]
 29%|██▉       | 366/1261 [04:41<12:09,  1.23it/s]
 29%|██▉       | 367/1261 [04:41<11:39,  1.28it/s]
 29%|██▉       | 368/1261 [04:42<11:32,  1.29it/s]
 29%|██▉       | 369/1261 [04:43<11:33,  1.29it/s]
 29%|██▉       | 370/1261 [04:44<12:18,  1.21it/s]
 29%|██▉       | 371/1261 [04:45<12:10,  1.22it/s]
 30%|██▉       | 372/1261 [04:45<12:01,  1.23it/s]
 30%|██▉       | 373/1261 [04:46<12:00,  1.23it/s]
 30%|██▉       | 374/1261 [04:47<12:01,  1.23it/s]
 30%|██▉       | 375/1261 [04:48<12:00,  1.23it/s]
 30%|██▉       | 376/1261 [04:49<11:58,  1.23it/s]
 30%|██▉       | 377/1261 [04:49<11:40,  1.26it/s]
 30%|██▉       | 378/1261 [04:50<11:39,  1.26it/s]
 30%|███       | 379/1261 [04:51<11:26,  1.28it/s]
 30%|███       | 380/1261 [04:52<11:48,  1.24it/s]
 30%|███       | 381/1261 [04:53<11:42,  1.25it/s]
 30%|███       | 382/1261 [04:53<11:25,  1.28it/s]
 30%|███       | 383/1261 [04:54<11:18,  1.29it/s]
 30%|███       | 384/1261 [04:55<11:56,  1.22it/s]
 31%|███       | 385/1261 [04:56<11:40,  1.25it/s]
 31%|███       | 386/1261 [04:57<11:40,  1.25it/s]
 31%|███       | 387/1261 [04:57<11:23,  1.28it/s]
 31%|███       | 388/1261 [04:58<11:25,  1.27it/s]
 31%|███       | 389/1261 [04:59<11:18,  1.28it/s]
 31%|███       | 390/1261 [05:00<11:09,  1.30it/s]
 31%|███       | 391/1261 [05:00<11:16,  1.29it/s]
 31%|███       | 392/1261 [05:01<11:57,  1.21it/s]
 31%|███       | 393/1261 [05:02<12:17,  1.18it/s]
 31%|███       | 394/1261 [05:03<12:18,  1.17it/s]
 31%|███▏      | 395/1261 [05:04<11:51,  1.22it/s]
 31%|███▏      | 396/1261 [05:05<12:03,  1.20it/s]
 31%|███▏      | 397/1261 [05:06<11:51,  1.21it/s]
 32%|███▏      | 398/1261 [05:06<11:37,  1.24it/s]
 32%|███▏      | 399/1261 [05:07<11:40,  1.23it/s]
 32%|███▏      | 400/1261 [05:08<11:49,  1.21it/s]
 32%|███▏      | 401/1261 [05:09<11:35,  1.24it/s]
 32%|███▏      | 402/1261 [05:10<11:35,  1.24it/s]
 32%|███▏      | 403/1261 [05:10<11:25,  1.25it/s]
 32%|███▏      | 404/1261 [05:11<11:34,  1.23it/s]
 32%|███▏      | 405/1261 [05:12<11:13,  1.27it/s]
 32%|███▏      | 406/1261 [05:13<11:25,  1.25it/s]
 32%|███▏      | 407/1261 [05:14<11:27,  1.24it/s]
 32%|███▏      | 408/1261 [05:14<11:23,  1.25it/s]
 32%|███▏      | 409/1261 [05:15<11:13,  1.27it/s]
 33%|███▎      | 410/1261 [05:16<11:09,  1.27it/s]
 33%|███▎      | 411/1261 [05:17<11:13,  1.26it/s]
 33%|███▎      | 412/1261 [05:17<11:01,  1.28it/s]
 33%|███▎      | 413/1261 [05:18<10:55,  1.29it/s]
 33%|███▎      | 414/1261 [05:19<10:47,  1.31it/s]
 33%|███▎      | 415/1261 [05:20<10:50,  1.30it/s]
 33%|███▎      | 416/1261 [05:20<10:34,  1.33it/s]
 33%|███▎      | 417/1261 [05:21<11:03,  1.27it/s]
 33%|███▎      | 418/1261 [05:22<10:53,  1.29it/s]
 33%|███▎      | 419/1261 [05:23<10:42,  1.31it/s]
 33%|███▎      | 420/1261 [05:24<10:39,  1.31it/s]
 33%|███▎      | 421/1261 [05:24<10:25,  1.34it/s]
 33%|███▎      | 422/1261 [05:25<10:25,  1.34it/s]
 34%|███▎      | 423/1261 [05:26<10:45,  1.30it/s]
 34%|███▎      | 424/1261 [05:27<10:50,  1.29it/s]
 34%|███▎      | 425/1261 [05:27<10:53,  1.28it/s]
 34%|███▍      | 426/1261 [05:28<10:58,  1.27it/s]
 34%|███▍      | 427/1261 [05:29<11:13,  1.24it/s]
 34%|███▍      | 428/1261 [05:30<11:24,  1.22it/s]
 34%|███▍      | 429/1261 [05:31<11:18,  1.23it/s]
 34%|███▍      | 430/1261 [05:32<11:30,  1.20it/s]
 34%|███▍      | 431/1261 [05:32<11:31,  1.20it/s]
 34%|███▍      | 432/1261 [05:33<11:37,  1.19it/s]
 34%|███▍      | 433/1261 [05:34<11:45,  1.17it/s]
 34%|███▍      | 434/1261 [05:35<11:49,  1.17it/s]
 34%|███▍      | 435/1261 [05:36<11:35,  1.19it/s]
 35%|███▍      | 436/1261 [05:37<11:31,  1.19it/s]
 35%|███▍      | 437/1261 [05:38<11:26,  1.20it/s]
 35%|███▍      | 438/1261 [05:38<11:23,  1.20it/s]
 35%|███▍      | 439/1261 [05:39<11:10,  1.23it/s]
 35%|███▍      | 440/1261 [05:40<11:06,  1.23it/s]
 35%|███▍      | 441/1261 [05:41<11:11,  1.22it/s]
 35%|███▌      | 442/1261 [05:42<11:04,  1.23it/s]
 35%|███▌      | 443/1261 [05:42<10:36,  1.29it/s]
 35%|███▌      | 444/1261 [05:43<10:22,  1.31it/s]
 35%|███▌      | 445/1261 [05:44<10:29,  1.30it/s]
 35%|███▌      | 446/1261 [05:45<10:20,  1.31it/s]
 35%|███▌      | 447/1261 [05:45<10:17,  1.32it/s]
 36%|███▌      | 448/1261 [05:46<10:53,  1.24it/s]
 36%|███▌      | 449/1261 [05:47<10:57,  1.23it/s]
 36%|███▌      | 450/1261 [05:48<10:57,  1.23it/s]
 36%|███▌      | 451/1261 [05:49<10:51,  1.24it/s]
 36%|███▌      | 452/1261 [05:49<10:45,  1.25it/s]
 36%|███▌      | 453/1261 [05:50<10:34,  1.27it/s]
 36%|███▌      | 454/1261 [05:51<10:17,  1.31it/s]
 36%|███▌      | 455/1261 [05:52<10:11,  1.32it/s]
 36%|███▌      | 456/1261 [05:52<10:09,  1.32it/s]
 36%|███▌      | 457/1261 [05:53<10:04,  1.33it/s]
 36%|███▋      | 458/1261 [05:54<10:02,  1.33it/s]
 36%|███▋      | 459/1261 [05:55<10:10,  1.31it/s]
 36%|███▋      | 460/1261 [05:55<10:15,  1.30it/s]
 37%|███▋      | 461/1261 [05:56<10:19,  1.29it/s]
 37%|███▋      | 462/1261 [05:57<10:00,  1.33it/s]
 37%|███▋      | 463/1261 [05:58<10:18,  1.29it/s]
 37%|███▋      | 464/1261 [05:58<10:15,  1.30it/s]
 37%|███▋      | 465/1261 [05:59<10:10,  1.30it/s]
 37%|███▋      | 466/1261 [06:00<10:10,  1.30it/s]
 37%|███▋      | 467/1261 [06:01<10:26,  1.27it/s]
 37%|███▋      | 468/1261 [06:02<10:29,  1.26it/s]
 37%|███▋      | 469/1261 [06:02<10:32,  1.25it/s]
 37%|███▋      | 470/1261 [06:03<10:29,  1.26it/s]
 37%|███▋      | 471/1261 [06:04<10:42,  1.23it/s]
 37%|███▋      | 472/1261 [06:05<12:22,  1.06it/s]
 38%|███▊      | 473/1261 [06:06<12:48,  1.03it/s]
 38%|███▊      | 474/1261 [06:08<14:32,  1.11s/it]
 38%|███▊      | 475/1261 [06:09<13:03,  1.00it/s]
 38%|███▊      | 476/1261 [06:09<12:11,  1.07it/s]
 38%|███▊      | 477/1261 [06:10<11:40,  1.12it/s]
 38%|███▊      | 478/1261 [06:11<11:25,  1.14it/s]
 38%|███▊      | 479/1261 [06:12<11:03,  1.18it/s]
 38%|███▊      | 480/1261 [06:13<10:39,  1.22it/s]
 38%|███▊      | 481/1261 [06:13<10:28,  1.24it/s]
 38%|███▊      | 482/1261 [06:14<10:11,  1.27it/s]
 38%|███▊      | 483/1261 [06:15<10:36,  1.22it/s]
 38%|███▊      | 484/1261 [06:16<10:35,  1.22it/s]
 38%|███▊      | 485/1261 [06:17<10:36,  1.22it/s]
 39%|███▊      | 486/1261 [06:17<10:08,  1.27it/s]
 39%|███▊      | 487/1261 [06:18<09:53,  1.30it/s]
 39%|███▊      | 488/1261 [06:19<09:59,  1.29it/s]
 39%|███▉      | 489/1261 [06:20<09:55,  1.30it/s]
 39%|███▉      | 490/1261 [06:20<10:09,  1.26it/s]
 39%|███▉      | 491/1261 [06:21<10:06,  1.27it/s]
 39%|███▉      | 492/1261 [06:22<09:59,  1.28it/s]
 39%|███▉      | 493/1261 [06:23<10:03,  1.27it/s]
 39%|███▉      | 494/1261 [06:23<09:48,  1.30it/s]
 39%|███▉      | 495/1261 [06:24<09:41,  1.32it/s]
 39%|███▉      | 496/1261 [06:25<09:48,  1.30it/s]
 39%|███▉      | 497/1261 [06:26<09:52,  1.29it/s]
 39%|███▉      | 498/1261 [06:27<09:58,  1.28it/s]
 40%|███▉      | 499/1261 [06:27<09:46,  1.30it/s]
 40%|███▉      | 500/1261 [06:28<09:44,  1.30it/s]
 40%|███▉      | 501/1261 [06:29<09:51,  1.28it/s]
 40%|███▉      | 502/1261 [06:30<09:57,  1.27it/s]
 40%|███▉      | 503/1261 [06:30<09:51,  1.28it/s]
 40%|███▉      | 504/1261 [06:31<09:48,  1.29it/s]
 40%|████      | 505/1261 [06:32<09:45,  1.29it/s]
 40%|████      | 506/1261 [06:33<09:50,  1.28it/s]
 40%|████      | 507/1261 [06:34<09:55,  1.27it/s]
 40%|████      | 508/1261 [06:34<09:40,  1.30it/s]
 40%|████      | 509/1261 [06:35<09:45,  1.29it/s]
 40%|████      | 510/1261 [06:36<09:37,  1.30it/s]
 41%|████      | 511/1261 [06:37<09:39,  1.29it/s]
 41%|████      | 512/1261 [06:37<09:26,  1.32it/s]
 41%|████      | 513/1261 [06:38<09:24,  1.33it/s]
 41%|████      | 514/1261 [06:39<09:18,  1.34it/s]
 41%|████      | 515/1261 [06:40<09:14,  1.35it/s]
 41%|████      | 516/1261 [06:40<09:35,  1.30it/s]
 41%|████      | 517/1261 [06:41<09:41,  1.28it/s]
 41%|████      | 518/1261 [06:42<09:42,  1.28it/s]
 41%|████      | 519/1261 [06:43<09:43,  1.27it/s]
 41%|████      | 520/1261 [06:44<09:42,  1.27it/s]
 41%|████▏     | 521/1261 [06:44<09:42,  1.27it/s]
 41%|████▏     | 522/1261 [06:45<09:34,  1.29it/s]
 41%|████▏     | 523/1261 [06:46<09:29,  1.30it/s]
 42%|████▏     | 524/1261 [06:47<09:17,  1.32it/s]
 42%|████▏     | 525/1261 [06:47<09:05,  1.35it/s]
 42%|████▏     | 526/1261 [06:48<09:06,  1.35it/s]
 42%|████▏     | 527/1261 [06:49<09:15,  1.32it/s]
 42%|████▏     | 528/1261 [06:50<09:05,  1.34it/s]
 42%|████▏     | 529/1261 [06:50<09:02,  1.35it/s]
 42%|████▏     | 530/1261 [06:51<09:28,  1.29it/s]
 42%|████▏     | 531/1261 [06:52<09:27,  1.29it/s]
 42%|████▏     | 532/1261 [06:53<09:20,  1.30it/s]
 42%|████▏     | 533/1261 [06:53<09:22,  1.29it/s]
 42%|████▏     | 534/1261 [06:54<09:09,  1.32it/s]
 42%|████▏     | 535/1261 [06:55<09:05,  1.33it/s]
 43%|████▎     | 536/1261 [06:56<09:09,  1.32it/s]
 43%|████▎     | 537/1261 [06:56<09:11,  1.31it/s]
 43%|████▎     | 538/1261 [06:57<09:07,  1.32it/s]
 43%|████▎     | 539/1261 [06:58<09:32,  1.26it/s]
 43%|████▎     | 540/1261 [06:59<09:31,  1.26it/s]
 43%|████▎     | 541/1261 [07:00<09:26,  1.27it/s]
 43%|████▎     | 542/1261 [07:00<09:22,  1.28it/s]
 43%|████▎     | 543/1261 [07:01<09:09,  1.31it/s]
 43%|████▎     | 544/1261 [07:02<09:12,  1.30it/s]
 43%|████▎     | 545/1261 [07:03<09:05,  1.31it/s]
 43%|████▎     | 546/1261 [07:03<09:04,  1.31it/s]
 43%|████▎     | 547/1261 [07:04<08:53,  1.34it/s]
 43%|████▎     | 548/1261 [07:05<09:02,  1.31it/s]
 44%|████▎     | 549/1261 [07:06<09:05,  1.31it/s]
 44%|████▎     | 550/1261 [07:07<09:06,  1.30it/s]
 44%|████▎     | 551/1261 [07:07<09:08,  1.29it/s]
 44%|████▍     | 552/1261 [07:08<08:51,  1.33it/s]
 44%|████▍     | 553/1261 [07:09<08:42,  1.35it/s]
 44%|████▍     | 554/1261 [07:09<08:52,  1.33it/s]
 44%|████▍     | 555/1261 [07:10<08:47,  1.34it/s]
 44%|████▍     | 556/1261 [07:11<08:51,  1.33it/s]
 44%|████▍     | 557/1261 [07:12<08:55,  1.32it/s]
 44%|████▍     | 558/1261 [07:12<08:43,  1.34it/s]
 44%|████▍     | 559/1261 [07:13<08:47,  1.33it/s]
 44%|████▍     | 560/1261 [07:14<08:43,  1.34it/s]
 44%|████▍     | 561/1261 [07:15<09:03,  1.29it/s]
 45%|████▍     | 562/1261 [07:16<09:27,  1.23it/s]
 45%|████▍     | 563/1261 [07:17<09:29,  1.23it/s]
 45%|████▍     | 564/1261 [07:17<09:19,  1.25it/s]
 45%|████▍     | 565/1261 [07:18<09:05,  1.28it/s]
 45%|████▍     | 566/1261 [07:19<08:58,  1.29it/s]
 45%|████▍     | 567/1261 [07:20<08:56,  1.29it/s]
 45%|████▌     | 568/1261 [07:20<08:52,  1.30it/s]
 45%|████▌     | 569/1261 [07:21<09:08,  1.26it/s]
 45%|████▌     | 570/1261 [07:22<09:12,  1.25it/s]
 45%|████▌     | 571/1261 [07:23<09:20,  1.23it/s]
 45%|████▌     | 572/1261 [07:24<09:17,  1.24it/s]
 45%|████▌     | 573/1261 [07:24<09:24,  1.22it/s]
 46%|████▌     | 574/1261 [07:25<09:18,  1.23it/s]
 46%|████▌     | 575/1261 [07:26<09:13,  1.24it/s]
 46%|████▌     | 576/1261 [07:27<09:07,  1.25it/s]
 46%|████▌     | 577/1261 [07:28<09:02,  1.26it/s]
 46%|████▌     | 578/1261 [07:28<09:04,  1.25it/s]
 46%|████▌     | 579/1261 [07:29<09:00,  1.26it/s]
 46%|████▌     | 580/1261 [07:30<08:50,  1.28it/s]
 46%|████▌     | 581/1261 [07:31<08:59,  1.26it/s]
 46%|████▌     | 582/1261 [07:32<08:53,  1.27it/s]
 46%|████▌     | 583/1261 [07:32<08:41,  1.30it/s]
 46%|████▋     | 584/1261 [07:33<08:26,  1.34it/s]
 46%|████▋     | 585/1261 [07:34<08:18,  1.36it/s]
 46%|████▋     | 586/1261 [07:34<08:28,  1.33it/s]
 47%|████▋     | 587/1261 [07:35<08:34,  1.31it/s]
 47%|████▋     | 588/1261 [07:36<08:35,  1.31it/s]
 47%|████▋     | 589/1261 [07:37<08:45,  1.28it/s]
 47%|████▋     | 590/1261 [07:38<08:44,  1.28it/s]
 47%|████▋     | 591/1261 [07:38<08:54,  1.25it/s]
 47%|████▋     | 592/1261 [07:39<09:04,  1.23it/s]
 47%|████▋     | 593/1261 [07:40<09:06,  1.22it/s]
 47%|████▋     | 594/1261 [07:41<08:54,  1.25it/s]
 47%|████▋     | 595/1261 [07:42<08:56,  1.24it/s]
 47%|████▋     | 596/1261 [07:43<08:56,  1.24it/s]
 47%|████▋     | 597/1261 [07:43<09:09,  1.21it/s]
 47%|████▋     | 598/1261 [07:44<09:19,  1.19it/s]
 48%|████▊     | 599/1261 [07:45<08:56,  1.23it/s]
 48%|████▊     | 600/1261 [07:46<08:57,  1.23it/s]
 48%|████▊     | 601/1261 [07:47<08:59,  1.22it/s]
 48%|████▊     | 602/1261 [07:47<08:41,  1.26it/s]
 48%|████▊     | 603/1261 [07:48<08:37,  1.27it/s]
 48%|████▊     | 604/1261 [07:49<08:40,  1.26it/s]
 48%|████▊     | 605/1261 [07:50<08:36,  1.27it/s]
 48%|████▊     | 606/1261 [07:51<08:31,  1.28it/s]
 48%|████▊     | 607/1261 [07:51<08:49,  1.23it/s]
 48%|████▊     | 608/1261 [07:52<08:36,  1.27it/s]
 48%|████▊     | 609/1261 [07:53<08:26,  1.29it/s]
 48%|████▊     | 610/1261 [07:54<08:45,  1.24it/s]
 48%|████▊     | 611/1261 [07:55<08:43,  1.24it/s]
 49%|████▊     | 612/1261 [07:55<08:55,  1.21it/s]
 49%|████▊     | 613/1261 [07:56<08:56,  1.21it/s]
 49%|████▊     | 614/1261 [07:57<08:40,  1.24it/s]
 49%|████▉     | 615/1261 [07:58<08:28,  1.27it/s]
 49%|████▉     | 616/1261 [07:59<08:17,  1.30it/s]
 49%|████▉     | 617/1261 [07:59<08:10,  1.31it/s]
 49%|████▉     | 618/1261 [08:00<08:18,  1.29it/s]
 49%|████▉     | 619/1261 [08:01<08:24,  1.27it/s]
 49%|████▉     | 620/1261 [08:02<08:20,  1.28it/s]
 49%|████▉     | 621/1261 [08:03<08:41,  1.23it/s]
 49%|████▉     | 622/1261 [08:03<08:29,  1.25it/s]
 49%|████▉     | 623/1261 [08:04<08:24,  1.27it/s]
 49%|████▉     | 624/1261 [08:05<08:21,  1.27it/s]
 50%|████▉     | 625/1261 [08:06<08:18,  1.28it/s]
 50%|████▉     | 626/1261 [08:06<08:14,  1.29it/s]
 50%|████▉     | 627/1261 [08:07<08:21,  1.26it/s]
 50%|████▉     | 628/1261 [08:08<08:12,  1.29it/s]
 50%|████▉     | 629/1261 [08:09<08:06,  1.30it/s]
 50%|████▉     | 630/1261 [08:10<08:23,  1.25it/s]
 50%|█████     | 631/1261 [08:10<08:42,  1.21it/s]
 50%|█████     | 632/1261 [08:11<08:28,  1.24it/s]
 50%|█████     | 633/1261 [08:12<08:27,  1.24it/s]
 50%|█████     | 634/1261 [08:13<08:19,  1.25it/s]
 50%|█████     | 635/1261 [08:14<08:09,  1.28it/s]
 50%|█████     | 636/1261 [08:14<07:58,  1.31it/s]
 51%|█████     | 637/1261 [08:15<07:58,  1.30it/s]
 51%|█████     | 638/1261 [08:16<07:57,  1.31it/s]
 51%|█████     | 639/1261 [08:17<07:50,  1.32it/s]
 51%|█████     | 640/1261 [08:17<07:44,  1.34it/s]
 51%|█████     | 641/1261 [08:18<07:39,  1.35it/s]
 51%|█████     | 642/1261 [08:19<08:12,  1.26it/s]
 51%|█████     | 643/1261 [08:20<08:14,  1.25it/s]
 51%|█████     | 644/1261 [08:21<08:05,  1.27it/s]
 51%|█████     | 645/1261 [08:21<08:04,  1.27it/s]
 51%|█████     | 646/1261 [08:22<08:06,  1.26it/s]
 51%|█████▏    | 647/1261 [08:23<07:52,  1.30it/s]
 51%|█████▏    | 648/1261 [08:24<07:47,  1.31it/s]
 51%|█████▏    | 649/1261 [08:24<07:41,  1.33it/s]
 52%|█████▏    | 650/1261 [08:25<07:35,  1.34it/s]
 52%|█████▏    | 651/1261 [08:26<07:47,  1.31it/s]
 52%|█████▏    | 652/1261 [08:27<07:52,  1.29it/s]
 52%|█████▏    | 653/1261 [08:27<07:57,  1.27it/s]
 52%|█████▏    | 654/1261 [08:28<07:49,  1.29it/s]
 52%|█████▏    | 655/1261 [08:29<07:52,  1.28it/s]
 52%|█████▏    | 656/1261 [08:30<07:43,  1.30it/s]
 52%|█████▏    | 657/1261 [08:30<07:42,  1.31it/s]
 52%|█████▏    | 658/1261 [08:31<07:38,  1.31it/s]
 52%|█████▏    | 659/1261 [08:32<07:36,  1.32it/s]
 52%|█████▏    | 660/1261 [08:33<07:36,  1.32it/s]
 52%|█████▏    | 661/1261 [08:33<07:31,  1.33it/s]
 52%|█████▏    | 662/1261 [08:34<07:45,  1.29it/s]
 53%|█████▎    | 663/1261 [08:35<07:45,  1.28it/s]
 53%|█████▎    | 664/1261 [08:36<07:51,  1.27it/s]
 53%|█████▎    | 665/1261 [08:37<07:41,  1.29it/s]
 53%|█████▎    | 666/1261 [08:37<07:50,  1.26it/s]
 53%|█████▎    | 667/1261 [08:38<07:47,  1.27it/s]
 53%|█████▎    | 668/1261 [08:39<07:38,  1.29it/s]
 53%|█████▎    | 669/1261 [08:40<08:04,  1.22it/s]
 53%|█████▎    | 670/1261 [08:41<07:55,  1.24it/s]
 53%|█████▎    | 671/1261 [08:41<07:43,  1.27it/s]
 53%|█████▎    | 672/1261 [08:42<07:39,  1.28it/s]
 53%|█████▎    | 673/1261 [08:43<07:47,  1.26it/s]
 53%|█████▎    | 674/1261 [08:44<07:42,  1.27it/s]
 54%|█████▎    | 675/1261 [08:45<07:43,  1.26it/s]
 54%|█████▎    | 676/1261 [08:45<07:31,  1.29it/s]
 54%|█████▎    | 677/1261 [08:46<07:28,  1.30it/s]
 54%|█████▍    | 678/1261 [08:47<07:35,  1.28it/s]
 54%|█████▍    | 679/1261 [08:48<07:42,  1.26it/s]
 54%|█████▍    | 680/1261 [08:49<07:37,  1.27it/s]
 54%|█████▍    | 681/1261 [08:49<07:30,  1.29it/s]
 54%|█████▍    | 682/1261 [08:50<07:35,  1.27it/s]
 54%|█████▍    | 683/1261 [08:51<07:38,  1.26it/s]
 54%|█████▍    | 684/1261 [08:52<07:33,  1.27it/s]
 54%|█████▍    | 685/1261 [08:52<07:23,  1.30it/s]
 54%|█████▍    | 686/1261 [08:53<07:14,  1.32it/s]
 54%|█████▍    | 687/1261 [08:54<07:16,  1.31it/s]
 55%|█████▍    | 688/1261 [08:55<07:33,  1.26it/s]
 55%|█████▍    | 689/1261 [08:56<07:54,  1.20it/s]
 55%|█████▍    | 690/1261 [08:56<07:44,  1.23it/s]
 55%|█████▍    | 691/1261 [08:57<07:41,  1.23it/s]
 55%|█████▍    | 692/1261 [08:58<07:40,  1.24it/s]
 55%|█████▍    | 693/1261 [08:59<07:38,  1.24it/s]
 55%|█████▌    | 694/1261 [09:00<07:24,  1.28it/s]
 55%|█████▌    | 695/1261 [09:00<07:16,  1.30it/s]
 55%|█████▌    | 696/1261 [09:01<07:25,  1.27it/s]
 55%|█████▌    | 697/1261 [09:02<07:22,  1.27it/s]
 55%|█████▌    | 698/1261 [09:03<07:28,  1.25it/s]
 55%|█████▌    | 699/1261 [09:04<07:31,  1.25it/s]
 56%|█████▌    | 700/1261 [09:04<07:32,  1.24it/s]
 56%|█████▌    | 701/1261 [09:05<07:30,  1.24it/s]
 56%|█████▌    | 702/1261 [09:06<07:26,  1.25it/s]
 56%|█████▌    | 703/1261 [09:07<07:19,  1.27it/s]
 56%|█████▌    | 704/1261 [09:07<07:14,  1.28it/s]
 56%|█████▌    | 705/1261 [09:08<07:14,  1.28it/s]
 56%|█████▌    | 706/1261 [09:09<07:18,  1.27it/s]
 56%|█████▌    | 707/1261 [09:10<07:17,  1.27it/s]
 56%|█████▌    | 708/1261 [09:11<07:25,  1.24it/s]
 56%|█████▌    | 709/1261 [09:12<07:25,  1.24it/s]
 56%|█████▋    | 710/1261 [09:12<07:09,  1.28it/s]
 56%|█████▋    | 711/1261 [09:13<07:07,  1.29it/s]
 56%|█████▋    | 712/1261 [09:14<07:05,  1.29it/s]
 57%|█████▋    | 713/1261 [09:15<07:00,  1.30it/s]
 57%|█████▋    | 714/1261 [09:15<06:53,  1.32it/s]
 57%|█████▋    | 715/1261 [09:16<06:54,  1.32it/s]
 57%|█████▋    | 716/1261 [09:17<07:11,  1.26it/s]
 57%|█████▋    | 717/1261 [09:18<07:05,  1.28it/s]
 57%|█████▋    | 718/1261 [09:18<07:10,  1.26it/s]
 57%|█████▋    | 719/1261 [09:19<07:31,  1.20it/s]
 57%|█████▋    | 720/1261 [09:20<07:17,  1.24it/s]
 57%|█████▋    | 721/1261 [09:21<07:17,  1.24it/s]
 57%|█████▋    | 722/1261 [09:22<07:03,  1.27it/s]
 57%|█████▋    | 723/1261 [09:22<07:05,  1.26it/s]
 57%|█████▋    | 724/1261 [09:24<09:08,  1.02s/it]
 57%|█████▋    | 725/1261 [09:25<08:41,  1.03it/s]
 58%|█████▊    | 726/1261 [09:26<08:17,  1.07it/s]
 58%|█████▊    | 727/1261 [09:27<07:58,  1.12it/s]
 58%|█████▊    | 728/1261 [09:27<07:29,  1.19it/s]
 58%|█████▊    | 729/1261 [09:28<07:19,  1.21it/s]
 58%|█████▊    | 730/1261 [09:29<07:07,  1.24it/s]
 58%|█████▊    | 731/1261 [09:30<06:58,  1.27it/s]
 58%|█████▊    | 732/1261 [09:30<06:55,  1.27it/s]
 58%|█████▊    | 733/1261 [09:31<07:07,  1.24it/s]
 58%|█████▊    | 734/1261 [09:32<07:01,  1.25it/s]
 58%|█████▊    | 735/1261 [09:33<06:51,  1.28it/s]
 58%|█████▊    | 736/1261 [09:33<06:38,  1.32it/s]
 58%|█████▊    | 737/1261 [09:34<06:42,  1.30it/s]
 59%|█████▊    | 738/1261 [09:35<06:44,  1.29it/s]
 59%|█████▊    | 739/1261 [09:36<06:48,  1.28it/s]
 59%|█████▊    | 740/1261 [09:37<06:53,  1.26it/s]
 59%|█████▉    | 741/1261 [09:37<06:43,  1.29it/s]
 59%|█████▉    | 742/1261 [09:38<06:47,  1.27it/s]
 59%|█████▉    | 743/1261 [09:39<06:53,  1.25it/s]
 59%|█████▉    | 744/1261 [09:40<06:39,  1.30it/s]
 59%|█████▉    | 745/1261 [09:41<07:02,  1.22it/s]
 59%|█████▉    | 746/1261 [09:42<08:47,  1.02s/it]
 59%|█████▉    | 747/1261 [09:43<08:18,  1.03it/s]
 59%|█████▉    | 748/1261 [09:44<07:38,  1.12it/s]
 59%|█████▉    | 749/1261 [09:44<07:16,  1.17it/s]
 59%|█████▉    | 750/1261 [09:45<07:05,  1.20it/s]
 60%|█████▉    | 751/1261 [09:46<06:53,  1.23it/s]
 60%|█████▉    | 752/1261 [09:47<06:47,  1.25it/s]
 60%|█████▉    | 753/1261 [09:48<06:36,  1.28it/s]
 60%|█████▉    | 754/1261 [09:48<06:34,  1.28it/s]
 60%|█████▉    | 755/1261 [09:50<08:18,  1.02it/s]
 60%|█████▉    | 756/1261 [09:51<07:44,  1.09it/s]
 60%|██████    | 757/1261 [09:51<07:20,  1.14it/s]
 60%|██████    | 758/1261 [09:52<07:07,  1.18it/s]
 60%|██████    | 759/1261 [09:53<06:44,  1.24it/s]
 60%|██████    | 760/1261 [09:54<06:32,  1.28it/s]
 60%|██████    | 761/1261 [09:54<06:26,  1.29it/s]
 60%|██████    | 762/1261 [09:55<06:27,  1.29it/s]
 61%|██████    | 763/1261 [09:56<06:30,  1.28it/s]
 61%|██████    | 764/1261 [09:57<06:23,  1.29it/s]
 61%|██████    | 765/1261 [09:57<06:22,  1.30it/s]
 61%|██████    | 766/1261 [09:58<06:28,  1.27it/s]
 61%|██████    | 767/1261 [09:59<06:36,  1.24it/s]
 61%|██████    | 768/1261 [10:00<06:37,  1.24it/s]
 61%|██████    | 769/1261 [10:01<06:51,  1.20it/s]
 61%|██████    | 770/1261 [10:02<06:53,  1.19it/s]
 61%|██████    | 771/1261 [10:02<06:50,  1.19it/s]
 61%|██████    | 772/1261 [10:03<06:46,  1.20it/s]
 61%|██████▏   | 773/1261 [10:04<06:32,  1.24it/s]
 61%|██████▏   | 774/1261 [10:05<06:33,  1.24it/s]
 61%|██████▏   | 775/1261 [10:06<06:22,  1.27it/s]
 62%|██████▏   | 776/1261 [10:06<06:25,  1.26it/s]
 62%|██████▏   | 777/1261 [10:07<06:17,  1.28it/s]
 62%|██████▏   | 778/1261 [10:08<06:19,  1.27it/s]
 62%|██████▏   | 779/1261 [10:09<06:11,  1.30it/s]
 62%|██████▏   | 780/1261 [10:09<06:14,  1.28it/s]
 62%|██████▏   | 781/1261 [10:10<06:10,  1.29it/s]
 62%|██████▏   | 782/1261 [10:11<06:05,  1.31it/s]
 62%|██████▏   | 783/1261 [10:12<06:13,  1.28it/s]
 62%|██████▏   | 784/1261 [10:13<06:19,  1.26it/s]
 62%|██████▏   | 785/1261 [10:13<06:26,  1.23it/s]
 62%|██████▏   | 786/1261 [10:14<06:23,  1.24it/s]
 62%|██████▏   | 787/1261 [10:15<06:21,  1.24it/s]
 62%|██████▏   | 788/1261 [10:16<06:17,  1.25it/s]
 63%|██████▎   | 789/1261 [10:17<06:18,  1.25it/s]
 63%|██████▎   | 790/1261 [10:17<06:18,  1.24it/s]
 63%|██████▎   | 791/1261 [10:18<06:13,  1.26it/s]
 63%|██████▎   | 792/1261 [10:19<06:07,  1.28it/s]
 63%|██████▎   | 793/1261 [10:20<06:13,  1.25it/s]
 63%|██████▎   | 794/1261 [10:21<06:25,  1.21it/s]
 63%|██████▎   | 795/1261 [10:21<06:20,  1.23it/s]
 63%|██████▎   | 796/1261 [10:22<06:20,  1.22it/s]
 63%|██████▎   | 797/1261 [10:23<06:15,  1.24it/s]
 63%|██████▎   | 798/1261 [10:24<06:17,  1.23it/s]
 63%|██████▎   | 799/1261 [10:25<06:11,  1.24it/s]
 63%|██████▎   | 800/1261 [10:25<06:05,  1.26it/s]
 64%|██████▎   | 801/1261 [10:26<06:12,  1.23it/s]
 64%|██████▎   | 802/1261 [10:27<06:12,  1.23it/s]
 64%|██████▎   | 803/1261 [10:28<06:12,  1.23it/s]
 64%|██████▍   | 804/1261 [10:29<06:08,  1.24it/s]
 64%|██████▍   | 805/1261 [10:29<06:00,  1.27it/s]
 64%|██████▍   | 806/1261 [10:30<05:55,  1.28it/s]
 64%|██████▍   | 807/1261 [10:31<05:57,  1.27it/s]
 64%|██████▍   | 808/1261 [10:32<06:09,  1.23it/s]
 64%|██████▍   | 809/1261 [10:33<06:09,  1.22it/s]
 64%|██████▍   | 810/1261 [10:34<06:04,  1.24it/s]
 64%|██████▍   | 811/1261 [10:34<06:01,  1.25it/s]
 64%|██████▍   | 812/1261 [10:35<06:12,  1.21it/s]
 64%|██████▍   | 813/1261 [10:36<06:09,  1.21it/s]
 65%|██████▍   | 814/1261 [10:37<06:04,  1.23it/s]
 65%|██████▍   | 815/1261 [10:38<05:54,  1.26it/s]
 65%|██████▍   | 816/1261 [10:38<05:55,  1.25it/s]
 65%|██████▍   | 817/1261 [10:39<05:48,  1.27it/s]
 65%|██████▍   | 818/1261 [10:40<05:51,  1.26it/s]
 65%|██████▍   | 819/1261 [10:41<05:57,  1.24it/s]
 65%|██████▌   | 820/1261 [10:42<05:50,  1.26it/s]
 65%|██████▌   | 821/1261 [10:42<05:48,  1.26it/s]
 65%|██████▌   | 822/1261 [10:43<05:46,  1.27it/s]
 65%|██████▌   | 823/1261 [10:44<05:40,  1.29it/s]
 65%|██████▌   | 824/1261 [10:45<05:43,  1.27it/s]
 65%|██████▌   | 825/1261 [10:46<05:50,  1.24it/s]
 66%|██████▌   | 826/1261 [10:46<05:56,  1.22it/s]
 66%|██████▌   | 827/1261 [10:47<05:51,  1.23it/s]
 66%|██████▌   | 828/1261 [10:48<05:58,  1.21it/s]
 66%|██████▌   | 829/1261 [10:49<05:52,  1.23it/s]
 66%|██████▌   | 830/1261 [10:50<05:48,  1.24it/s]
 66%|██████▌   | 831/1261 [10:50<05:54,  1.21it/s]
 66%|██████▌   | 832/1261 [10:51<05:56,  1.20it/s]
 66%|██████▌   | 833/1261 [10:52<05:54,  1.21it/s]
 66%|██████▌   | 834/1261 [10:53<05:51,  1.21it/s]
 66%|██████▌   | 835/1261 [10:54<05:51,  1.21it/s]
 66%|██████▋   | 836/1261 [10:55<05:44,  1.23it/s]
 66%|██████▋   | 837/1261 [10:55<05:41,  1.24it/s]
 66%|██████▋   | 838/1261 [10:56<05:38,  1.25it/s]
 67%|██████▋   | 839/1261 [10:57<05:45,  1.22it/s]
 67%|██████▋   | 840/1261 [10:58<05:47,  1.21it/s]
 67%|██████▋   | 841/1261 [10:59<05:54,  1.18it/s]
 67%|██████▋   | 842/1261 [11:00<06:01,  1.16it/s]
 67%|██████▋   | 843/1261 [11:00<05:55,  1.18it/s]
 67%|██████▋   | 844/1261 [11:01<05:49,  1.19it/s]
 67%|██████▋   | 845/1261 [11:02<05:41,  1.22it/s]
 67%|██████▋   | 846/1261 [11:03<05:31,  1.25it/s]
 67%|██████▋   | 847/1261 [11:04<05:33,  1.24it/s]
 67%|██████▋   | 848/1261 [11:04<05:38,  1.22it/s]
 67%|██████▋   | 849/1261 [11:05<05:31,  1.24it/s]
 67%|██████▋   | 850/1261 [11:06<05:31,  1.24it/s]
 67%|██████▋   | 851/1261 [11:07<05:24,  1.26it/s]
 68%|██████▊   | 852/1261 [11:08<05:25,  1.26it/s]
 68%|██████▊   | 853/1261 [11:08<05:21,  1.27it/s]
 68%|██████▊   | 854/1261 [11:09<05:17,  1.28it/s]
 68%|██████▊   | 855/1261 [11:10<05:16,  1.28it/s]
 68%|██████▊   | 856/1261 [11:11<05:23,  1.25it/s]
 68%|██████▊   | 857/1261 [11:12<05:20,  1.26it/s]
 68%|██████▊   | 858/1261 [11:12<05:30,  1.22it/s]
 68%|██████▊   | 859/1261 [11:13<05:31,  1.21it/s]
 68%|██████▊   | 860/1261 [11:14<05:24,  1.24it/s]
 68%|██████▊   | 861/1261 [11:15<05:24,  1.23it/s]
 68%|██████▊   | 862/1261 [11:16<05:19,  1.25it/s]
 68%|██████▊   | 863/1261 [11:16<05:17,  1.26it/s]
 69%|██████▊   | 864/1261 [11:17<05:11,  1.28it/s]
 69%|██████▊   | 865/1261 [11:18<05:13,  1.26it/s]
 69%|██████▊   | 866/1261 [11:19<05:18,  1.24it/s]
 69%|██████▉   | 867/1261 [11:20<05:17,  1.24it/s]
 69%|██████▉   | 868/1261 [11:20<05:17,  1.24it/s]
 69%|██████▉   | 869/1261 [11:21<05:21,  1.22it/s]
 69%|██████▉   | 870/1261 [11:22<05:16,  1.23it/s]
 69%|██████▉   | 871/1261 [11:23<05:13,  1.24it/s]
 69%|██████▉   | 872/1261 [11:24<05:02,  1.29it/s]
 69%|██████▉   | 873/1261 [11:24<04:57,  1.30it/s]
 69%|██████▉   | 874/1261 [11:25<05:02,  1.28it/s]
 69%|██████▉   | 875/1261 [11:26<05:05,  1.26it/s]
 69%|██████▉   | 876/1261 [11:27<05:13,  1.23it/s]
 70%|██████▉   | 877/1261 [11:28<05:19,  1.20it/s]
 70%|██████▉   | 878/1261 [11:29<05:13,  1.22it/s]
 70%|██████▉   | 879/1261 [11:29<05:07,  1.24it/s]
 70%|██████▉   | 880/1261 [11:30<05:14,  1.21it/s]
 70%|██████▉   | 881/1261 [11:31<05:13,  1.21it/s]
 70%|██████▉   | 882/1261 [11:32<05:16,  1.20it/s]
 70%|███████   | 883/1261 [11:33<05:18,  1.19it/s]
 70%|███████   | 884/1261 [11:33<05:09,  1.22it/s]
 70%|███████   | 885/1261 [11:34<05:11,  1.21it/s]
 70%|███████   | 886/1261 [11:35<05:03,  1.24it/s]
 70%|███████   | 887/1261 [11:36<04:56,  1.26it/s]
 70%|███████   | 888/1261 [11:37<04:55,  1.26it/s]
 70%|███████   | 889/1261 [11:37<05:01,  1.24it/s]
 71%|███████   | 890/1261 [11:38<04:53,  1.26it/s]
 71%|███████   | 891/1261 [11:39<04:58,  1.24it/s]
 71%|███████   | 892/1261 [11:40<04:54,  1.25it/s]
 71%|███████   | 893/1261 [11:41<04:48,  1.27it/s]
 71%|███████   | 894/1261 [11:41<04:56,  1.24it/s]
 71%|███████   | 895/1261 [11:42<04:58,  1.23it/s]
 71%|███████   | 896/1261 [11:43<04:52,  1.25it/s]
 71%|███████   | 897/1261 [11:44<04:52,  1.25it/s]
 71%|███████   | 898/1261 [11:45<04:48,  1.26it/s]
 71%|███████▏  | 899/1261 [11:45<04:52,  1.24it/s]
 71%|███████▏  | 900/1261 [11:46<04:53,  1.23it/s]
 71%|███████▏  | 901/1261 [11:47<05:00,  1.20it/s]
 72%|███████▏  | 902/1261 [11:48<05:00,  1.19it/s]
 72%|███████▏  | 903/1261 [11:49<04:50,  1.23it/s]
 72%|███████▏  | 904/1261 [11:50<05:04,  1.17it/s]
 72%|███████▏  | 905/1261 [11:51<05:03,  1.17it/s]
 72%|███████▏  | 906/1261 [11:51<04:57,  1.19it/s]
 72%|███████▏  | 907/1261 [11:52<04:52,  1.21it/s]
 72%|███████▏  | 908/1261 [11:53<04:45,  1.24it/s]
 72%|███████▏  | 909/1261 [11:54<04:44,  1.24it/s]
 72%|███████▏  | 910/1261 [11:55<04:43,  1.24it/s]
 72%|███████▏  | 911/1261 [11:55<04:54,  1.19it/s]
 72%|███████▏  | 912/1261 [11:56<04:50,  1.20it/s]
 72%|███████▏  | 913/1261 [11:57<04:41,  1.23it/s]
 72%|███████▏  | 914/1261 [11:58<04:41,  1.23it/s]
 73%|███████▎  | 915/1261 [11:59<04:54,  1.17it/s]
 73%|███████▎  | 916/1261 [12:00<04:45,  1.21it/s]
 73%|███████▎  | 917/1261 [12:00<04:50,  1.18it/s]
 73%|███████▎  | 918/1261 [12:01<04:52,  1.17it/s]
 73%|███████▎  | 919/1261 [12:02<04:47,  1.19it/s]
 73%|███████▎  | 920/1261 [12:03<04:44,  1.20it/s]
 73%|███████▎  | 921/1261 [12:04<04:32,  1.25it/s]
 73%|███████▎  | 922/1261 [12:05<04:44,  1.19it/s]
 73%|███████▎  | 923/1261 [12:05<04:40,  1.21it/s]
 73%|███████▎  | 924/1261 [12:06<04:51,  1.16it/s]
 73%|███████▎  | 925/1261 [12:07<04:45,  1.18it/s]
 73%|███████▎  | 926/1261 [12:08<04:37,  1.21it/s]
 74%|███████▎  | 927/1261 [12:09<04:39,  1.20it/s]
 74%|███████▎  | 928/1261 [12:10<04:36,  1.20it/s]
 74%|███████▎  | 929/1261 [12:10<04:34,  1.21it/s]
 74%|███████▍  | 930/1261 [12:11<04:35,  1.20it/s]
 74%|███████▍  | 931/1261 [12:12<04:28,  1.23it/s]
 74%|███████▍  | 932/1261 [12:13<04:23,  1.25it/s]
 74%|███████▍  | 933/1261 [12:14<05:34,  1.02s/it]
 74%|███████▍  | 934/1261 [12:15<05:11,  1.05it/s]
 74%|███████▍  | 935/1261 [12:16<04:53,  1.11it/s]
 74%|███████▍  | 936/1261 [12:17<04:39,  1.16it/s]
 74%|███████▍  | 937/1261 [12:18<04:44,  1.14it/s]
 74%|███████▍  | 938/1261 [12:19<05:58,  1.11s/it]
 74%|███████▍  | 939/1261 [12:20<05:28,  1.02s/it]
 75%|███████▍  | 940/1261 [12:21<05:15,  1.02it/s]
 75%|███████▍  | 941/1261 [12:22<05:20,  1.00s/it]
 75%|███████▍  | 942/1261 [12:23<05:14,  1.01it/s]
 75%|███████▍  | 943/1261 [12:24<05:05,  1.04it/s]
 75%|███████▍  | 944/1261 [12:25<04:57,  1.07it/s]
 75%|███████▍  | 945/1261 [12:26<04:52,  1.08it/s]
 75%|███████▌  | 946/1261 [12:27<04:46,  1.10it/s]
 75%|███████▌  | 947/1261 [12:27<04:40,  1.12it/s]
 75%|███████▌  | 948/1261 [12:28<04:43,  1.10it/s]
 75%|███████▌  | 949/1261 [12:29<04:33,  1.14it/s]
 75%|███████▌  | 950/1261 [12:30<04:33,  1.14it/s]
 75%|███████▌  | 951/1261 [12:31<04:27,  1.16it/s]
 75%|███████▌  | 952/1261 [12:32<04:15,  1.21it/s]
 76%|███████▌  | 953/1261 [12:32<04:13,  1.22it/s]
 76%|███████▌  | 954/1261 [12:33<04:12,  1.21it/s]
 76%|███████▌  | 955/1261 [12:34<04:05,  1.25it/s]
 76%|███████▌  | 956/1261 [12:35<04:10,  1.22it/s]
 76%|███████▌  | 957/1261 [12:36<04:01,  1.26it/s]
 76%|███████▌  | 958/1261 [12:36<04:01,  1.26it/s]
 76%|███████▌  | 959/1261 [12:37<03:59,  1.26it/s]
 76%|███████▌  | 960/1261 [12:38<03:56,  1.27it/s]
 76%|███████▌  | 961/1261 [12:39<03:53,  1.29it/s]
 76%|███████▋  | 962/1261 [12:39<03:50,  1.30it/s]
 76%|███████▋  | 963/1261 [12:40<03:52,  1.28it/s]
 76%|███████▋  | 964/1261 [12:41<03:50,  1.29it/s]
 77%|███████▋  | 965/1261 [12:42<03:50,  1.28it/s]
 77%|███████▋  | 966/1261 [12:43<03:49,  1.29it/s]
 77%|███████▋  | 967/1261 [12:44<04:50,  1.01it/s]
 77%|███████▋  | 968/1261 [12:45<04:28,  1.09it/s]
 77%|███████▋  | 969/1261 [12:46<04:09,  1.17it/s]
 77%|███████▋  | 970/1261 [12:46<04:00,  1.21it/s]
 77%|███████▋  | 971/1261 [12:47<03:56,  1.23it/s]
 77%|███████▋  | 972/1261 [12:48<03:52,  1.24it/s]
 77%|███████▋  | 973/1261 [12:49<03:43,  1.29it/s]
 77%|███████▋  | 974/1261 [12:49<03:36,  1.33it/s]
 77%|███████▋  | 975/1261 [12:50<03:40,  1.30it/s]
 77%|███████▋  | 976/1261 [12:51<03:39,  1.30it/s]
 77%|███████▋  | 977/1261 [12:52<03:40,  1.29it/s]
 78%|███████▊  | 978/1261 [12:52<03:42,  1.27it/s]
 78%|███████▊  | 979/1261 [12:53<03:39,  1.29it/s]
 78%|███████▊  | 980/1261 [12:54<03:38,  1.29it/s]
 78%|███████▊  | 981/1261 [12:55<03:40,  1.27it/s]
 78%|███████▊  | 982/1261 [12:56<03:36,  1.29it/s]
 78%|███████▊  | 983/1261 [12:56<03:37,  1.28it/s]
 78%|███████▊  | 984/1261 [12:57<03:31,  1.31it/s]
 78%|███████▊  | 985/1261 [12:58<03:35,  1.28it/s]
 78%|███████▊  | 986/1261 [12:59<03:35,  1.28it/s]
 78%|███████▊  | 987/1261 [12:59<03:34,  1.28it/s]
 78%|███████▊  | 988/1261 [13:00<03:29,  1.30it/s]
 78%|███████▊  | 989/1261 [13:01<03:24,  1.33it/s]
 79%|███████▊  | 990/1261 [13:02<03:29,  1.30it/s]
 79%|███████▊  | 991/1261 [13:02<03:23,  1.32it/s]
 79%|███████▊  | 992/1261 [13:03<03:19,  1.35it/s]
 79%|███████▊  | 993/1261 [13:04<03:27,  1.29it/s]
 79%|███████▉  | 994/1261 [13:05<03:20,  1.33it/s]
 79%|███████▉  | 995/1261 [13:05<03:24,  1.30it/s]
 79%|███████▉  | 996/1261 [13:06<03:34,  1.23it/s]
 79%|███████▉  | 997/1261 [13:07<03:25,  1.29it/s]
 79%|███████▉  | 998/1261 [13:08<03:29,  1.25it/s]
 79%|███████▉  | 999/1261 [13:09<03:30,  1.25it/s]
 79%|███████▉  | 1000/1261 [13:10<03:24,  1.27it/s]
 79%|███████▉  | 1001/1261 [13:10<03:27,  1.25it/s]
 79%|███████▉  | 1002/1261 [13:11<03:29,  1.24it/s]
 80%|███████▉  | 1003/1261 [13:12<03:33,  1.21it/s]
 80%|███████▉  | 1004/1261 [13:13<03:29,  1.22it/s]
 80%|███████▉  | 1005/1261 [13:14<03:40,  1.16it/s]
 80%|███████▉  | 1006/1261 [13:15<03:36,  1.18it/s]
 80%|███████▉  | 1007/1261 [13:15<03:31,  1.20it/s]
 80%|███████▉  | 1008/1261 [13:16<03:23,  1.24it/s]
 80%|████████  | 1009/1261 [13:17<03:19,  1.26it/s]
 80%|████████  | 1010/1261 [13:18<03:15,  1.29it/s]
 80%|████████  | 1011/1261 [13:18<03:13,  1.29it/s]
 80%|████████  | 1012/1261 [13:19<03:12,  1.29it/s]
 80%|████████  | 1013/1261 [13:20<03:15,  1.27it/s]
 80%|████████  | 1014/1261 [13:21<03:09,  1.30it/s]
 80%|████████  | 1015/1261 [13:22<03:11,  1.29it/s]
 81%|████████  | 1016/1261 [13:22<03:11,  1.28it/s]
 81%|████████  | 1017/1261 [13:23<03:09,  1.29it/s]
 81%|████████  | 1018/1261 [13:24<03:11,  1.27it/s]
 81%|████████  | 1019/1261 [13:25<03:14,  1.24it/s]
 81%|████████  | 1020/1261 [13:26<03:14,  1.24it/s]
 81%|████████  | 1021/1261 [13:26<03:14,  1.23it/s]
 81%|████████  | 1022/1261 [13:27<03:11,  1.25it/s]
 81%|████████  | 1023/1261 [13:28<03:10,  1.25it/s]
 81%|████████  | 1024/1261 [13:29<03:09,  1.25it/s]
 81%|████████▏ | 1025/1261 [13:30<03:07,  1.26it/s]
 81%|████████▏ | 1026/1261 [13:30<03:04,  1.28it/s]
 81%|████████▏ | 1027/1261 [13:31<03:00,  1.30it/s]
 82%|████████▏ | 1028/1261 [13:32<03:01,  1.29it/s]
 82%|████████▏ | 1029/1261 [13:33<03:02,  1.27it/s]
 82%|████████▏ | 1030/1261 [13:33<02:58,  1.30it/s]
 82%|████████▏ | 1031/1261 [13:34<02:54,  1.32it/s]
 82%|████████▏ | 1032/1261 [13:35<02:55,  1.30it/s]
 82%|████████▏ | 1033/1261 [13:36<02:52,  1.32it/s]
 82%|████████▏ | 1034/1261 [13:36<02:51,  1.33it/s]
 82%|████████▏ | 1035/1261 [13:37<02:53,  1.30it/s]
 82%|████████▏ | 1036/1261 [13:38<02:52,  1.31it/s]
 82%|████████▏ | 1037/1261 [13:39<03:03,  1.22it/s]
 82%|████████▏ | 1038/1261 [13:40<03:00,  1.23it/s]
 82%|████████▏ | 1039/1261 [13:40<02:59,  1.24it/s]
 82%|████████▏ | 1040/1261 [13:41<02:52,  1.28it/s]
 83%|████████▎ | 1041/1261 [13:42<02:52,  1.28it/s]
 83%|████████▎ | 1042/1261 [13:43<02:48,  1.30it/s]
 83%|████████▎ | 1043/1261 [13:43<02:48,  1.30it/s]
 83%|████████▎ | 1044/1261 [13:44<02:45,  1.31it/s]
 83%|████████▎ | 1045/1261 [13:45<02:45,  1.31it/s]
 83%|████████▎ | 1046/1261 [13:46<02:45,  1.30it/s]
 83%|████████▎ | 1047/1261 [13:46<02:40,  1.33it/s]
 83%|████████▎ | 1048/1261 [13:48<03:25,  1.04it/s]
 83%|████████▎ | 1049/1261 [13:49<03:08,  1.13it/s]
[  1.88205471e-04  -2.20364852e-01   2.44740016e+02] None [26508 26509 26510 ...,  4597  4598  4599] []
 83%|████████▎ | 1050/1261 [13:49<02:59,  1.17it/s]
[  1.88312960e-04  -2.26679003e-01   2.38380726e+02] None [29541 29542 29543 ...,  4452  4453  4454] []
 83%|████████▎ | 1051/1261 [13:50<02:49,  1.24it/s]
 83%|████████▎ | 1052/1261 [13:51<02:44,  1.27it/s]
 84%|████████▎ | 1053/1261 [13:52<02:41,  1.28it/s]
 84%|████████▎ | 1054/1261 [13:52<02:43,  1.27it/s]
 84%|████████▎ | 1055/1261 [13:53<02:41,  1.27it/s]
 84%|████████▎ | 1056/1261 [13:54<02:44,  1.25it/s]
 84%|████████▍ | 1057/1261 [13:55<02:39,  1.28it/s]
 84%|████████▍ | 1058/1261 [13:56<02:39,  1.27it/s]
 84%|████████▍ | 1059/1261 [13:57<03:20,  1.01it/s]
 84%|████████▍ | 1060/1261 [13:58<03:04,  1.09it/s]
 84%|████████▍ | 1061/1261 [13:59<02:55,  1.14it/s]
 84%|████████▍ | 1062/1261 [13:59<02:47,  1.19it/s]
 84%|████████▍ | 1063/1261 [14:00<02:41,  1.23it/s]
 84%|████████▍ | 1064/1261 [14:01<02:34,  1.28it/s]
 84%|████████▍ | 1065/1261 [14:02<02:33,  1.28it/s]
 85%|████████▍ | 1066/1261 [14:02<02:32,  1.28it/s]
 85%|████████▍ | 1067/1261 [14:03<02:38,  1.22it/s]
 85%|████████▍ | 1068/1261 [14:04<02:35,  1.24it/s]
 85%|████████▍ | 1069/1261 [14:05<02:32,  1.26it/s]
 85%|████████▍ | 1070/1261 [14:06<02:28,  1.29it/s]
 85%|████████▍ | 1071/1261 [14:06<02:28,  1.28it/s]
 85%|████████▌ | 1072/1261 [14:07<02:27,  1.28it/s]
 85%|████████▌ | 1073/1261 [14:08<02:23,  1.31it/s]
 85%|████████▌ | 1074/1261 [14:09<02:22,  1.31it/s]
 85%|████████▌ | 1075/1261 [14:09<02:25,  1.27it/s]
 85%|████████▌ | 1076/1261 [14:10<02:27,  1.26it/s]
 85%|████████▌ | 1077/1261 [14:11<02:21,  1.30it/s]
 85%|████████▌ | 1078/1261 [14:12<02:23,  1.27it/s]
 86%|████████▌ | 1079/1261 [14:13<02:22,  1.27it/s]
 86%|████████▌ | 1080/1261 [14:13<02:23,  1.26it/s]
 86%|████████▌ | 1081/1261 [14:14<02:19,  1.29it/s]
 86%|████████▌ | 1082/1261 [14:15<02:19,  1.28it/s]
 86%|████████▌ | 1083/1261 [14:16<02:36,  1.14it/s]
 86%|████████▌ | 1084/1261 [14:17<02:54,  1.01it/s]
 86%|████████▌ | 1085/1261 [14:18<02:44,  1.07it/s]
 86%|████████▌ | 1086/1261 [14:19<02:39,  1.10it/s]
 86%|████████▌ | 1087/1261 [14:20<02:33,  1.13it/s]
 86%|████████▋ | 1088/1261 [14:20<02:24,  1.20it/s]
 86%|████████▋ | 1089/1261 [14:21<02:22,  1.21it/s]
 86%|████████▋ | 1090/1261 [14:22<02:17,  1.24it/s]
 87%|████████▋ | 1091/1261 [14:23<02:16,  1.25it/s]
 87%|████████▋ | 1092/1261 [14:24<02:15,  1.25it/s]
 87%|████████▋ | 1093/1261 [14:24<02:13,  1.26it/s]
 87%|████████▋ | 1094/1261 [14:25<02:09,  1.29it/s]
 87%|████████▋ | 1095/1261 [14:26<02:05,  1.32it/s]
 87%|████████▋ | 1096/1261 [14:27<02:06,  1.31it/s]
 87%|████████▋ | 1097/1261 [14:27<02:05,  1.31it/s]
 87%|████████▋ | 1098/1261 [14:28<02:07,  1.28it/s]
 87%|████████▋ | 1099/1261 [14:29<02:07,  1.27it/s]
 87%|████████▋ | 1100/1261 [14:30<02:04,  1.29it/s]
 87%|████████▋ | 1101/1261 [14:30<02:01,  1.31it/s]
 87%|████████▋ | 1102/1261 [14:31<02:01,  1.30it/s]
 87%|████████▋ | 1103/1261 [14:32<02:04,  1.27it/s]
 88%|████████▊ | 1104/1261 [14:33<02:07,  1.23it/s]
 88%|████████▊ | 1105/1261 [14:34<02:04,  1.25it/s]
 88%|████████▊ | 1106/1261 [14:35<02:03,  1.25it/s]
 88%|████████▊ | 1107/1261 [14:35<02:01,  1.27it/s]
 88%|████████▊ | 1108/1261 [14:36<01:59,  1.28it/s]
 88%|████████▊ | 1109/1261 [14:37<01:59,  1.28it/s]
 88%|████████▊ | 1110/1261 [14:38<02:02,  1.23it/s]
 88%|████████▊ | 1111/1261 [14:38<01:59,  1.25it/s]
 88%|████████▊ | 1112/1261 [14:39<02:01,  1.23it/s]
 88%|████████▊ | 1113/1261 [14:40<02:09,  1.15it/s]
 88%|████████▊ | 1114/1261 [14:41<02:04,  1.18it/s]
 88%|████████▊ | 1115/1261 [14:42<02:00,  1.21it/s]
 89%|████████▊ | 1116/1261 [14:43<01:57,  1.23it/s]
 89%|████████▊ | 1117/1261 [14:43<01:56,  1.24it/s]
 89%|████████▊ | 1118/1261 [14:44<01:53,  1.26it/s]
 89%|████████▊ | 1119/1261 [14:45<01:54,  1.25it/s]
 89%|████████▉ | 1120/1261 [14:46<01:53,  1.24it/s]
 89%|████████▉ | 1121/1261 [14:47<01:55,  1.21it/s]
 89%|████████▉ | 1122/1261 [14:48<01:54,  1.22it/s]
 89%|████████▉ | 1123/1261 [14:48<01:53,  1.22it/s]
 89%|████████▉ | 1124/1261 [14:49<01:52,  1.22it/s]
 89%|████████▉ | 1125/1261 [14:50<01:49,  1.24it/s]
 89%|████████▉ | 1126/1261 [14:51<01:48,  1.24it/s]
 89%|████████▉ | 1127/1261 [14:52<01:49,  1.22it/s]
 89%|████████▉ | 1128/1261 [14:52<01:48,  1.23it/s]
 90%|████████▉ | 1129/1261 [14:54<02:21,  1.07s/it]
 90%|████████▉ | 1130/1261 [14:55<02:11,  1.01s/it]
 90%|████████▉ | 1131/1261 [14:56<01:58,  1.10it/s]
 90%|████████▉ | 1132/1261 [14:56<01:53,  1.14it/s]
 90%|████████▉ | 1133/1261 [14:57<01:48,  1.18it/s]
 90%|████████▉ | 1134/1261 [14:58<01:42,  1.24it/s]
 90%|█████████ | 1135/1261 [14:59<01:46,  1.19it/s]
 90%|█████████ | 1136/1261 [15:00<01:42,  1.22it/s]
 90%|█████████ | 1137/1261 [15:00<01:38,  1.26it/s]
 90%|█████████ | 1138/1261 [15:01<01:35,  1.28it/s]
 90%|█████████ | 1139/1261 [15:02<01:33,  1.30it/s]
 90%|█████████ | 1140/1261 [15:03<01:38,  1.22it/s]
 90%|█████████ | 1141/1261 [15:04<01:35,  1.26it/s]
 91%|█████████ | 1142/1261 [15:04<01:31,  1.30it/s]
 91%|█████████ | 1143/1261 [15:05<01:31,  1.29it/s]
 91%|█████████ | 1144/1261 [15:06<01:31,  1.28it/s]
 91%|█████████ | 1145/1261 [15:07<01:50,  1.05it/s]
 91%|█████████ | 1146/1261 [15:08<01:49,  1.05it/s]
 91%|█████████ | 1147/1261 [15:09<01:41,  1.12it/s]
 91%|█████████ | 1148/1261 [15:10<01:36,  1.17it/s]
 91%|█████████ | 1149/1261 [15:10<01:32,  1.21it/s]
 91%|█████████ | 1150/1261 [15:11<01:31,  1.22it/s]
 91%|█████████▏| 1151/1261 [15:12<01:30,  1.22it/s]
 91%|█████████▏| 1152/1261 [15:13<01:26,  1.25it/s]
 91%|█████████▏| 1153/1261 [15:14<01:31,  1.18it/s]
 92%|█████████▏| 1154/1261 [15:15<01:28,  1.21it/s]
 92%|█████████▏| 1155/1261 [15:15<01:26,  1.23it/s]
 92%|█████████▏| 1156/1261 [15:16<01:21,  1.29it/s]
 92%|█████████▏| 1157/1261 [15:17<01:20,  1.29it/s]
 92%|█████████▏| 1158/1261 [15:17<01:18,  1.32it/s]
 92%|█████████▏| 1159/1261 [15:18<01:16,  1.33it/s]
 92%|█████████▏| 1160/1261 [15:19<01:15,  1.34it/s]
 92%|█████████▏| 1161/1261 [15:20<01:13,  1.35it/s]
 92%|█████████▏| 1162/1261 [15:21<01:17,  1.28it/s]
 92%|█████████▏| 1163/1261 [15:21<01:16,  1.29it/s]
 92%|█████████▏| 1164/1261 [15:22<01:15,  1.28it/s]
 92%|█████████▏| 1165/1261 [15:24<01:37,  1.02s/it]
 92%|█████████▏| 1166/1261 [15:25<01:31,  1.04it/s]
 93%|█████████▎| 1167/1261 [15:25<01:25,  1.10it/s]
 93%|█████████▎| 1168/1261 [15:26<01:22,  1.13it/s]
 93%|█████████▎| 1169/1261 [15:27<01:21,  1.13it/s]
 93%|█████████▎| 1170/1261 [15:29<01:40,  1.10s/it]
 93%|█████████▎| 1171/1261 [15:29<01:31,  1.02s/it]
 93%|█████████▎| 1172/1261 [15:30<01:24,  1.05it/s]
 93%|█████████▎| 1173/1261 [15:31<01:20,  1.10it/s]
 93%|█████████▎| 1174/1261 [15:32<01:17,  1.13it/s]
 93%|█████████▎| 1175/1261 [15:33<01:33,  1.08s/it]
 93%|█████████▎| 1176/1261 [15:34<01:23,  1.02it/s]
 93%|█████████▎| 1177/1261 [15:35<01:16,  1.10it/s]
 93%|█████████▎| 1178/1261 [15:36<01:12,  1.14it/s]
 93%|█████████▎| 1179/1261 [15:36<01:08,  1.20it/s]
 94%|█████████▎| 1180/1261 [15:37<01:04,  1.25it/s]
 94%|█████████▎| 1181/1261 [15:38<01:02,  1.28it/s]
 94%|█████████▎| 1182/1261 [15:39<01:01,  1.29it/s]
 94%|█████████▍| 1183/1261 [15:39<00:59,  1.31it/s]
 94%|█████████▍| 1184/1261 [15:40<00:58,  1.31it/s]
 94%|█████████▍| 1185/1261 [15:41<00:58,  1.30it/s]
 94%|█████████▍| 1186/1261 [15:42<00:58,  1.27it/s]
 94%|█████████▍| 1187/1261 [15:43<00:58,  1.27it/s]
 94%|█████████▍| 1188/1261 [15:44<01:04,  1.14it/s]
 94%|█████████▍| 1189/1261 [15:45<01:09,  1.04it/s]
 94%|█████████▍| 1190/1261 [15:46<01:03,  1.12it/s]
 94%|█████████▍| 1191/1261 [15:46<01:00,  1.16it/s]
 95%|█████████▍| 1192/1261 [15:47<00:59,  1.17it/s]
 95%|█████████▍| 1193/1261 [15:48<00:57,  1.19it/s]
 95%|█████████▍| 1194/1261 [15:49<00:55,  1.20it/s]
 95%|█████████▍| 1195/1261 [15:50<00:53,  1.24it/s]
 95%|█████████▍| 1196/1261 [15:51<01:00,  1.08it/s]
 95%|█████████▍| 1197/1261 [15:52<01:02,  1.02it/s]
 95%|█████████▌| 1198/1261 [15:53<00:56,  1.11it/s]
 95%|█████████▌| 1199/1261 [15:53<00:53,  1.16it/s]
 95%|█████████▌| 1200/1261 [15:54<00:49,  1.22it/s]
 95%|█████████▌| 1201/1261 [15:55<00:47,  1.27it/s]
 95%|█████████▌| 1202/1261 [15:56<00:47,  1.24it/s]
 95%|█████████▌| 1203/1261 [15:56<00:46,  1.25it/s]
 95%|█████████▌| 1204/1261 [15:57<00:48,  1.18it/s]
 96%|█████████▌| 1205/1261 [15:59<00:56,  1.00s/it]
 96%|█████████▌| 1206/1261 [16:00<00:51,  1.07it/s]
 96%|█████████▌| 1207/1261 [16:00<00:47,  1.14it/s]
 96%|█████████▌| 1208/1261 [16:01<00:44,  1.19it/s]
 96%|█████████▌| 1209/1261 [16:02<00:43,  1.20it/s]
 96%|█████████▌| 1210/1261 [16:03<00:41,  1.23it/s]
 96%|█████████▌| 1211/1261 [16:03<00:40,  1.22it/s]
 96%|█████████▌| 1212/1261 [16:04<00:40,  1.21it/s]
 96%|█████████▌| 1213/1261 [16:05<00:39,  1.22it/s]
 96%|█████████▋| 1214/1261 [16:06<00:37,  1.24it/s]
 96%|█████████▋| 1215/1261 [16:07<00:47,  1.03s/it]
 96%|█████████▋| 1216/1261 [16:08<00:42,  1.05it/s]
 97%|█████████▋| 1217/1261 [16:09<00:39,  1.12it/s]
 97%|█████████▋| 1218/1261 [16:10<00:37,  1.16it/s]
 97%|█████████▋| 1219/1261 [16:11<00:36,  1.14it/s]
 97%|█████████▋| 1220/1261 [16:11<00:34,  1.20it/s]
 97%|█████████▋| 1221/1261 [16:12<00:33,  1.20it/s]
 97%|█████████▋| 1222/1261 [16:13<00:32,  1.21it/s]
 97%|█████████▋| 1223/1261 [16:14<00:30,  1.24it/s]
 97%|█████████▋| 1224/1261 [16:14<00:28,  1.28it/s]
 97%|█████████▋| 1225/1261 [16:15<00:27,  1.29it/s]
 97%|█████████▋| 1226/1261 [16:16<00:26,  1.30it/s]
 97%|█████████▋| 1227/1261 [16:18<00:33,  1.01it/s]
 97%|█████████▋| 1228/1261 [16:18<00:30,  1.08it/s]
 97%|█████████▋| 1229/1261 [16:19<00:27,  1.18it/s]
 98%|█████████▊| 1230/1261 [16:20<00:25,  1.23it/s]
 98%|█████████▊| 1231/1261 [16:20<00:23,  1.26it/s]
 98%|█████████▊| 1232/1261 [16:21<00:23,  1.25it/s]
 98%|█████████▊| 1233/1261 [16:22<00:22,  1.26it/s]
 98%|█████████▊| 1234/1261 [16:23<00:21,  1.28it/s]
 98%|█████████▊| 1235/1261 [16:24<00:21,  1.21it/s]
 98%|█████████▊| 1236/1261 [16:25<00:22,  1.13it/s]
 98%|█████████▊| 1237/1261 [16:26<00:20,  1.17it/s]
 98%|█████████▊| 1238/1261 [16:26<00:18,  1.22it/s]
 98%|█████████▊| 1239/1261 [16:27<00:17,  1.24it/s]
 98%|█████████▊| 1240/1261 [16:28<00:16,  1.26it/s]
 98%|█████████▊| 1241/1261 [16:29<00:16,  1.25it/s]
 98%|█████████▊| 1242/1261 [16:29<00:14,  1.27it/s]
 99%|█████████▊| 1243/1261 [16:30<00:14,  1.27it/s]
 99%|█████████▊| 1244/1261 [16:31<00:13,  1.25it/s]
 99%|█████████▊| 1245/1261 [16:32<00:12,  1.25it/s]
 99%|█████████▉| 1246/1261 [16:33<00:11,  1.26it/s]
 99%|█████████▉| 1247/1261 [16:33<00:11,  1.25it/s]
 99%|█████████▉| 1248/1261 [16:34<00:10,  1.26it/s]
 99%|█████████▉| 1249/1261 [16:35<00:09,  1.28it/s]
 99%|█████████▉| 1250/1261 [16:36<00:08,  1.29it/s]
 99%|█████████▉| 1251/1261 [16:36<00:07,  1.31it/s]
 99%|█████████▉| 1252/1261 [16:37<00:06,  1.30it/s]
 99%|█████████▉| 1253/1261 [16:38<00:06,  1.29it/s]
 99%|█████████▉| 1254/1261 [16:39<00:05,  1.30it/s]
100%|█████████▉| 1255/1261 [16:40<00:04,  1.30it/s]
100%|█████████▉| 1256/1261 [16:40<00:03,  1.29it/s]
100%|█████████▉| 1257/1261 [16:41<00:03,  1.27it/s]
100%|█████████▉| 1258/1261 [16:42<00:02,  1.22it/s]
100%|█████████▉| 1259/1261 [16:43<00:01,  1.25it/s]
100%|█████████▉| 1260/1261 [16:44<00:00,  1.29it/s]
[MoviePy] Done.
[MoviePy] >>>> Video ready: project_video_output.mp4 

CPU times: user 44min 41s, sys: 3min 21s, total: 48min 3s
Wall time: 16min 44s
  • The following is the result of the video pipeline being run on the project video.
In [58]:
from IPython.display import HTML
HTML("""
<video width="640" height="360" controls>
  <source src="{0}">
</video>
""".format('project_video_output.mp4'))
Out[58]:
In [57]:
challenge_output = 'challenge_result.mp4'
clip1 = VideoFileClip("challenge_video.mp4")#.subclip(10,11)
challenge_clip = clip1.fl_image(process_video_image) 
challenge_clip.write_videofile(challenge_output, audio=False)
[MoviePy] >>>> Building video challenge_result.mp4
[MoviePy] Writing video challenge_result.mp4
  0%|          | 0/485 [00:00<?, ?it/s]
  0%|          | 1/485 [00:00<05:42,  1.42it/s]
  0%|          | 2/485 [00:01<05:55,  1.36it/s]
  1%|          | 3/485 [00:02<06:14,  1.29it/s]
  1%|          | 4/485 [00:03<07:54,  1.01it/s]
  1%|          | 5/485 [00:04<07:24,  1.08it/s]
  1%|          | 6/485 [00:05<07:01,  1.14it/s]
  1%|▏         | 7/485 [00:06<06:37,  1.20it/s]
[  2.27403225e-04  -5.25880819e-01   5.52514133e+02] None [7099 7100 7101 ...,   65   66   67] []
  2%|▏         | 8/485 [00:06<06:21,  1.25it/s]
[  8.85417393e-05  -4.02807275e-01   5.27216603e+02] None [6704 6705 6706 ...,  306  307  308] []
  2%|▏         | 9/485 [00:07<06:15,  1.27it/s]
[  9.86871146e-05  -4.12193805e-01   5.31103160e+02] None [6738 6739 6740 ...,  409  410  411] []
  2%|▏         | 10/485 [00:08<06:12,  1.28it/s]
[  6.63231604e-05  -3.78432564e-01   5.23286081e+02] None [6454 6455 6456 ...,  322  323  324] []
  2%|▏         | 11/485 [00:09<06:06,  1.29it/s]
[  5.19726820e-05  -3.59864216e-01   5.15624129e+02] None [6431 6432 6433 ...,  285  286  287] []
  2%|▏         | 12/485 [00:10<07:46,  1.01it/s]
[  3.85201629e-05  -3.36698739e-01   5.05498981e+02] None [6436 6437 6438 ...,  251  252  253] []
  3%|▎         | 13/485 [00:11<07:18,  1.08it/s]
[  4.70201324e-05  -3.47263007e-01   5.07093458e+02] None [6636 6637 6638 ...,  115  116  117] []
  3%|▎         | 14/485 [00:12<06:56,  1.13it/s]
[  4.39741246e-05  -3.40157035e-01   5.03456925e+02] None [6493 6494 6495 ...,   29   30   31] []
  3%|▎         | 15/485 [00:12<06:36,  1.18it/s]
[  4.44934643e-05  -3.38818282e-01   5.01431601e+02] None [6436 6437 6438 ...,    2    3    4] []
  3%|▎         | 16/485 [00:14<08:09,  1.04s/it]
[  4.60456900e-05  -3.37701842e-01   4.99097100e+02] None [6531 6532 6533 ...,  632  633  634] []
  4%|▎         | 17/485 [00:15<07:22,  1.06it/s]
[  5.78781980e-05  -3.45540807e-01   4.98543082e+02] None [6296 6297 6298 ...,    0    1    2] []
  4%|▎         | 18/485 [00:15<06:52,  1.13it/s]
[  1.46107673e-05  -3.03097762e-01   4.89370500e+02] None [6394 6395 6396 ...,  650  651  652] []
  4%|▍         | 19/485 [00:16<06:38,  1.17it/s]
[  1.35034502e-05  -2.95996166e-01   4.83353374e+02] None [6589 6590 6591 ...,   71   72   73] []
  4%|▍         | 20/485 [00:17<06:26,  1.20it/s]
[ -2.25823666e-05  -2.57425335e-01   4.73163931e+02] None [6567 6568 6569 ...,   26   27   28] []
  4%|▍         | 21/485 [00:18<06:13,  1.24it/s]
[  3.66031591e-06  -2.79958072e-01   4.75561766e+02] None [6756 6757 6758 ...,   28   29   30] []
  5%|▍         | 22/485 [00:19<07:45,  1.01s/it]
  5%|▍         | 23/485 [00:20<07:11,  1.07it/s]
  5%|▍         | 24/485 [00:21<06:39,  1.15it/s]
  5%|▌         | 25/485 [00:21<06:25,  1.19it/s]
  5%|▌         | 26/485 [00:22<06:09,  1.24it/s]
[  8.19054547e-05  -3.70017644e-01   5.02965541e+02] None [7083 7084 7085 ...,  121  122  123] []
  6%|▌         | 27/485 [00:23<05:53,  1.30it/s]
[  7.74213411e-05  -3.64950457e-01   4.99568502e+02] None [7532 7533 7534 ...,  276  277  278] []
  6%|▌         | 28/485 [00:24<05:53,  1.29it/s]
[  7.27801421e-05  -3.66287982e-01   5.03778350e+02] None [7224 7225 7226 ...,  107  108    0] []
  6%|▌         | 29/485 [00:24<05:49,  1.31it/s]
  6%|▌         | 30/485 [00:25<05:40,  1.34it/s]
  6%|▋         | 31/485 [00:26<05:36,  1.35it/s]
  7%|▋         | 32/485 [00:27<05:37,  1.34it/s]
  7%|▋         | 33/485 [00:27<05:37,  1.34it/s]
  7%|▋         | 34/485 [00:28<05:44,  1.31it/s]
  7%|▋         | 35/485 [00:29<05:46,  1.30it/s]
[  6.14671592e-05  -3.27795664e-01   4.81959096e+02] None [6535 6536 6537 ...,  607    0    1] []
  7%|▋         | 36/485 [00:30<05:51,  1.28it/s]
  8%|▊         | 37/485 [00:31<07:20,  1.02it/s]
[ -1.01297270e-04  -1.69332398e-01   4.46557480e+02] None [6548 6549 6550 ...,   37   38   39] []
  8%|▊         | 38/485 [00:32<06:47,  1.10it/s]
  8%|▊         | 39/485 [00:33<06:27,  1.15it/s]
  8%|▊         | 40/485 [00:33<06:01,  1.23it/s]
  8%|▊         | 41/485 [00:34<05:44,  1.29it/s]
  9%|▊         | 42/485 [00:35<05:28,  1.35it/s]
  9%|▉         | 43/485 [00:35<05:29,  1.34it/s]
  9%|▉         | 44/485 [00:36<05:26,  1.35it/s]
  9%|▉         | 45/485 [00:37<05:18,  1.38it/s]
  9%|▉         | 46/485 [00:38<05:12,  1.41it/s]
 10%|▉         | 47/485 [00:38<05:13,  1.40it/s]
 10%|▉         | 48/485 [00:39<05:23,  1.35it/s]
 10%|█         | 49/485 [00:40<05:20,  1.36it/s]
 10%|█         | 50/485 [00:41<05:20,  1.36it/s]
 11%|█         | 51/485 [00:41<05:25,  1.33it/s]
 11%|█         | 52/485 [00:42<05:21,  1.35it/s]
 11%|█         | 53/485 [00:43<05:13,  1.38it/s]
 11%|█         | 54/485 [00:44<05:14,  1.37it/s]
 11%|█▏        | 55/485 [00:44<05:14,  1.37it/s]
 12%|█▏        | 56/485 [00:45<05:20,  1.34it/s]
 12%|█▏        | 57/485 [00:46<05:17,  1.35it/s]
 12%|█▏        | 58/485 [00:46<05:14,  1.36it/s]
 12%|█▏        | 59/485 [00:47<05:20,  1.33it/s]
 12%|█▏        | 60/485 [00:49<06:53,  1.03it/s]
 13%|█▎        | 61/485 [00:50<06:25,  1.10it/s]
 13%|█▎        | 62/485 [00:50<06:04,  1.16it/s]
 13%|█▎        | 63/485 [00:51<05:45,  1.22it/s]
 13%|█▎        | 64/485 [00:52<05:35,  1.26it/s]
[  2.87471756e-04  -6.45465113e-01   5.59656831e+02] None [3347 3348 3349 ...,   28   29   30] []
 13%|█▎        | 65/485 [00:52<05:25,  1.29it/s]
[  2.02240637e-04  -5.65959554e-01   5.43234227e+02] None [4013 4014 4015 ...,  119  120  121] []
 14%|█▎        | 66/485 [00:53<05:19,  1.31it/s]
[  1.64369630e-04  -5.35553345e-01   5.40631387e+02] None [3948 3949 3950 ...,    0    1    2] []
 14%|█▍        | 67/485 [00:54<05:10,  1.34it/s]
 14%|█▍        | 68/485 [00:55<05:29,  1.27it/s]
 14%|█▍        | 69/485 [00:56<05:27,  1.27it/s]
 14%|█▍        | 70/485 [00:56<05:27,  1.27it/s]
 15%|█▍        | 71/485 [00:57<05:20,  1.29it/s]
 15%|█▍        | 72/485 [00:58<05:20,  1.29it/s]
 15%|█▌        | 73/485 [00:59<05:10,  1.33it/s]
 15%|█▌        | 74/485 [00:59<05:08,  1.33it/s]
 15%|█▌        | 75/485 [01:00<05:10,  1.32it/s]
 16%|█▌        | 76/485 [01:01<05:08,  1.33it/s]
 16%|█▌        | 77/485 [01:02<05:05,  1.34it/s]
 16%|█▌        | 78/485 [01:02<05:05,  1.33it/s]
 16%|█▋        | 79/485 [01:03<05:14,  1.29it/s]
 16%|█▋        | 80/485 [01:04<05:24,  1.25it/s]
 17%|█▋        | 81/485 [01:05<05:24,  1.25it/s]
 17%|█▋        | 82/485 [01:06<05:14,  1.28it/s]
 17%|█▋        | 83/485 [01:06<05:14,  1.28it/s]
 17%|█▋        | 84/485 [01:07<05:13,  1.28it/s]
 18%|█▊        | 85/485 [01:08<05:07,  1.30it/s]
 18%|█▊        | 86/485 [01:09<05:06,  1.30it/s]
 18%|█▊        | 87/485 [01:09<05:08,  1.29it/s]
 18%|█▊        | 88/485 [01:10<05:14,  1.26it/s]
 18%|█▊        | 89/485 [01:11<05:04,  1.30it/s]
 19%|█▊        | 90/485 [01:12<05:54,  1.11it/s]
 19%|█▉        | 91/485 [01:13<06:10,  1.06it/s]
 19%|█▉        | 92/485 [01:14<05:47,  1.13it/s]
[  2.16939685e-04  -6.14485187e-01   5.91906063e+02] None [2452 2453 2454 ...,  307  308  309] []
 19%|█▉        | 93/485 [01:15<05:30,  1.19it/s]
 19%|█▉        | 94/485 [01:15<05:19,  1.23it/s]
 20%|█▉        | 95/485 [01:16<05:15,  1.24it/s]
 20%|█▉        | 96/485 [01:17<05:08,  1.26it/s]
 20%|██        | 97/485 [01:18<05:07,  1.26it/s]
 20%|██        | 98/485 [01:19<04:59,  1.29it/s]
 20%|██        | 99/485 [01:19<05:04,  1.27it/s]
 21%|██        | 100/485 [01:20<05:05,  1.26it/s]
 21%|██        | 101/485 [01:21<05:08,  1.24it/s]
 21%|██        | 102/485 [01:22<05:02,  1.27it/s]
 21%|██        | 103/485 [01:23<05:01,  1.27it/s]
 21%|██▏       | 104/485 [01:23<05:07,  1.24it/s]
 22%|██▏       | 105/485 [01:24<04:59,  1.27it/s]
 22%|██▏       | 106/485 [01:25<04:49,  1.31it/s]
[  3.25445441e-06  -3.11311247e-01   5.08807333e+02] None [4006 4007 4008 ...,  528  529  530] []
 22%|██▏       | 107/485 [01:26<04:51,  1.30it/s]
 22%|██▏       | 108/485 [01:26<04:52,  1.29it/s]
 22%|██▏       | 109/485 [01:27<04:52,  1.29it/s]
 23%|██▎       | 110/485 [01:28<04:57,  1.26it/s]
 23%|██▎       | 111/485 [01:29<04:58,  1.25it/s]
 23%|██▎       | 112/485 [01:30<05:03,  1.23it/s]
 23%|██▎       | 113/485 [01:31<05:03,  1.23it/s]
 24%|██▎       | 114/485 [01:31<05:00,  1.23it/s]
 24%|██▎       | 115/485 [01:32<04:59,  1.24it/s]
 24%|██▍       | 116/485 [01:33<04:58,  1.24it/s]
 24%|██▍       | 117/485 [01:34<05:11,  1.18it/s]
 24%|██▍       | 118/485 [01:35<04:56,  1.24it/s]
 25%|██▍       | 119/485 [01:35<04:49,  1.27it/s]
 25%|██▍       | 120/485 [01:36<04:50,  1.25it/s]
 25%|██▍       | 121/485 [01:37<04:42,  1.29it/s]
 25%|██▌       | 122/485 [01:38<04:39,  1.30it/s]
 25%|██▌       | 123/485 [01:38<04:36,  1.31it/s]
 26%|██▌       | 124/485 [01:39<04:42,  1.28it/s]
 26%|██▌       | 125/485 [01:40<04:48,  1.25it/s]
 26%|██▌       | 126/485 [01:41<04:48,  1.24it/s]
 26%|██▌       | 127/485 [01:42<04:48,  1.24it/s]
 26%|██▋       | 128/485 [01:42<04:45,  1.25it/s]
 27%|██▋       | 129/485 [01:43<04:38,  1.28it/s]
 27%|██▋       | 130/485 [01:45<06:04,  1.03s/it]
 27%|██▋       | 131/485 [01:46<05:38,  1.05it/s]
 27%|██▋       | 132/485 [01:46<05:12,  1.13it/s]
 27%|██▋       | 133/485 [01:47<05:05,  1.15it/s]
 28%|██▊       | 134/485 [01:48<04:50,  1.21it/s]
None None [] []
 28%|██▊       | 135/485 [01:49<04:38,  1.26it/s]
None None [] []
 28%|██▊       | 136/485 [01:49<04:29,  1.30it/s]
None None [] []
 28%|██▊       | 137/485 [01:50<04:26,  1.31it/s]
None None [] []
 28%|██▊       | 138/485 [01:51<04:21,  1.33it/s]
None None [] []
 29%|██▊       | 139/485 [01:52<04:44,  1.22it/s]
None None [] []
 29%|██▉       | 140/485 [01:53<05:28,  1.05it/s]
None None [] []
 29%|██▉       | 141/485 [01:54<05:02,  1.14it/s]
None None [] []
 29%|██▉       | 142/485 [01:54<04:48,  1.19it/s]
None None [] []
 29%|██▉       | 143/485 [01:55<04:39,  1.22it/s]
None None [] []
 30%|██▉       | 144/485 [01:56<04:38,  1.22it/s]
None None [] []
 30%|██▉       | 145/485 [01:57<04:29,  1.26it/s]
None None [] []
 30%|███       | 146/485 [01:58<04:46,  1.18it/s]
None None [] []
 30%|███       | 147/485 [01:59<05:24,  1.04it/s]
None None [] []
 31%|███       | 148/485 [02:00<06:07,  1.09s/it]
None None [] []
 31%|███       | 149/485 [02:02<06:20,  1.13s/it]
None [  7.28627874e-05  -2.68823015e-02   1.00976277e+03] [] [1835 1836 1837 ...,  657  658  659]
 31%|███       | 150/485 [02:02<05:40,  1.02s/it]
 31%|███       | 151/485 [02:03<05:20,  1.04it/s]
 31%|███▏      | 152/485 [02:04<05:05,  1.09it/s]
 32%|███▏      | 153/485 [02:05<04:47,  1.15it/s]
 32%|███▏      | 154/485 [02:06<04:40,  1.18it/s]
 32%|███▏      | 155/485 [02:06<04:30,  1.22it/s]
 32%|███▏      | 156/485 [02:07<04:22,  1.25it/s]
 32%|███▏      | 157/485 [02:08<04:13,  1.30it/s]
 33%|███▎      | 158/485 [02:09<04:18,  1.26it/s]
 33%|███▎      | 159/485 [02:10<04:33,  1.19it/s]
 33%|███▎      | 160/485 [02:11<05:27,  1.01s/it]
 33%|███▎      | 161/485 [02:12<05:11,  1.04it/s]
 33%|███▎      | 162/485 [02:13<04:47,  1.12it/s]
 34%|███▎      | 163/485 [02:13<04:33,  1.18it/s]
 34%|███▍      | 164/485 [02:14<04:21,  1.23it/s]
 34%|███▍      | 165/485 [02:16<05:26,  1.02s/it]
 34%|███▍      | 166/485 [02:16<05:02,  1.05it/s]
 34%|███▍      | 167/485 [02:17<04:43,  1.12it/s]
 35%|███▍      | 168/485 [02:18<04:25,  1.19it/s]
 35%|███▍      | 169/485 [02:19<05:22,  1.02s/it]
 35%|███▌      | 170/485 [02:20<04:58,  1.05it/s]
 35%|███▌      | 171/485 [02:21<04:36,  1.14it/s]
 35%|███▌      | 172/485 [02:22<04:28,  1.16it/s]
 36%|███▌      | 173/485 [02:22<04:22,  1.19it/s]
 36%|███▌      | 174/485 [02:23<04:18,  1.20it/s]
 36%|███▌      | 175/485 [02:24<04:17,  1.21it/s]
 36%|███▋      | 176/485 [02:25<04:20,  1.19it/s]
 36%|███▋      | 177/485 [02:26<05:30,  1.07s/it]
 37%|███▋      | 178/485 [02:27<05:05,  1.01it/s]
 37%|███▋      | 179/485 [02:28<04:42,  1.08it/s]
 37%|███▋      | 180/485 [02:29<04:23,  1.16it/s]
 37%|███▋      | 181/485 [02:30<04:14,  1.19it/s]
 38%|███▊      | 182/485 [02:30<04:12,  1.20it/s]
 38%|███▊      | 183/485 [02:31<04:07,  1.22it/s]
 38%|███▊      | 184/485 [02:32<04:01,  1.25it/s]
 38%|███▊      | 185/485 [02:33<03:52,  1.29it/s]
 38%|███▊      | 186/485 [02:34<04:09,  1.20it/s]
 39%|███▊      | 187/485 [02:34<04:09,  1.19it/s]
 39%|███▉      | 188/485 [02:35<04:10,  1.19it/s]
 39%|███▉      | 189/485 [02:37<05:05,  1.03s/it]
 39%|███▉      | 190/485 [02:38<04:47,  1.03it/s]
 39%|███▉      | 191/485 [02:38<04:29,  1.09it/s]
 40%|███▉      | 192/485 [02:39<04:18,  1.13it/s]
 40%|███▉      | 193/485 [02:40<04:01,  1.21it/s]
 40%|████      | 194/485 [02:41<04:55,  1.01s/it]
 40%|████      | 195/485 [02:42<04:32,  1.07it/s]
 40%|████      | 196/485 [02:43<04:14,  1.13it/s]
 41%|████      | 197/485 [02:44<04:15,  1.13it/s]
 41%|████      | 198/485 [02:45<04:11,  1.14it/s]
 41%|████      | 199/485 [02:45<04:00,  1.19it/s]
 41%|████      | 200/485 [02:46<03:59,  1.19it/s]
 41%|████▏     | 201/485 [02:48<04:46,  1.01s/it]
 42%|████▏     | 202/485 [02:48<04:21,  1.08it/s]
[ -7.92913745e-07  -3.13469689e-01   5.04509545e+02] None [4810 4811 4812 ...,   63   64   65] []
 42%|████▏     | 203/485 [02:49<04:08,  1.13it/s]
 42%|████▏     | 204/485 [02:50<03:59,  1.17it/s]
 42%|████▏     | 205/485 [02:51<03:56,  1.18it/s]
 42%|████▏     | 206/485 [02:51<03:48,  1.22it/s]
 43%|████▎     | 207/485 [02:52<03:45,  1.23it/s]
 43%|████▎     | 208/485 [02:53<03:40,  1.26it/s]
 43%|████▎     | 209/485 [02:54<03:37,  1.27it/s]
 43%|████▎     | 210/485 [02:55<03:39,  1.25it/s]
 44%|████▎     | 211/485 [02:55<03:33,  1.29it/s]
 44%|████▎     | 212/485 [02:56<03:31,  1.29it/s]
 44%|████▍     | 213/485 [02:57<03:30,  1.29it/s]
 44%|████▍     | 214/485 [02:58<04:23,  1.03it/s]
 44%|████▍     | 215/485 [02:59<04:00,  1.12it/s]
 45%|████▍     | 216/485 [03:00<03:48,  1.18it/s]
[  1.08702395e-04  -4.13865615e-01   5.18354982e+02] None [5498 5499 5500 ...,  501  502  503] []
 45%|████▍     | 217/485 [03:01<03:41,  1.21it/s]
 45%|████▍     | 218/485 [03:01<03:31,  1.26it/s]
 45%|████▌     | 219/485 [03:02<03:22,  1.31it/s]
 45%|████▌     | 220/485 [03:03<03:17,  1.34it/s]
 46%|████▌     | 221/485 [03:03<03:13,  1.36it/s]
 46%|████▌     | 222/485 [03:04<03:19,  1.32it/s]
 46%|████▌     | 223/485 [03:05<03:19,  1.32it/s]
 46%|████▌     | 224/485 [03:06<03:17,  1.32it/s]
 46%|████▋     | 225/485 [03:06<03:18,  1.31it/s]
 47%|████▋     | 226/485 [03:07<03:12,  1.34it/s]
 47%|████▋     | 227/485 [03:08<03:14,  1.33it/s]
 47%|████▋     | 228/485 [03:09<03:15,  1.32it/s]
 47%|████▋     | 229/485 [03:09<03:17,  1.30it/s]
 47%|████▋     | 230/485 [03:10<03:16,  1.30it/s]
[  9.66740931e-05  -4.17346829e-01   5.25668089e+02] None [4416 4417 4418 ...,   24   25   26] []
 48%|████▊     | 231/485 [03:11<03:14,  1.31it/s]
[  1.06877845e-04  -4.21562391e-01   5.22756168e+02] None [4963 4964 4965 ...,  172  173  174] []
 48%|████▊     | 232/485 [03:12<03:09,  1.33it/s]
 48%|████▊     | 233/485 [03:12<03:06,  1.35it/s]
 48%|████▊     | 234/485 [03:13<03:07,  1.34it/s]
 48%|████▊     | 235/485 [03:14<03:07,  1.33it/s]
 49%|████▊     | 236/485 [03:15<03:09,  1.31it/s]
 49%|████▉     | 237/485 [03:16<03:07,  1.32it/s]
 49%|████▉     | 238/485 [03:16<03:02,  1.35it/s]
 49%|████▉     | 239/485 [03:17<02:57,  1.38it/s]
 49%|████▉     | 240/485 [03:18<02:54,  1.40it/s]
 50%|████▉     | 241/485 [03:19<03:46,  1.08it/s]
 50%|████▉     | 242/485 [03:20<03:29,  1.16it/s]
 50%|█████     | 243/485 [03:20<03:22,  1.20it/s]
[  1.43616280e-04  -4.77483738e-01   5.43831201e+02] None [4920 4921 4922 ...,  749  750  751] []
 50%|█████     | 244/485 [03:21<03:11,  1.26it/s]
 51%|█████     | 245/485 [03:22<03:06,  1.29it/s]
[  1.46920450e-04  -4.82130211e-01   5.43537394e+02] None [4960 4961 4962 ...,  182  183  184] []
 51%|█████     | 246/485 [03:23<02:59,  1.34it/s]
[  1.05923698e-04  -4.37585994e-01   5.31884015e+02] None [5216 5217 5218 ...,  364  365  366] []
 51%|█████     | 247/485 [03:23<03:01,  1.31it/s]
 51%|█████     | 248/485 [03:25<03:25,  1.15it/s]
[  2.04536505e-05  -3.48703760e-01   5.13126141e+02] None [5197 5198 5199 ...,  421  422  423] []
 51%|█████▏    | 249/485 [03:26<03:42,  1.06it/s]
 52%|█████▏    | 250/485 [03:26<03:29,  1.12it/s]
 52%|█████▏    | 251/485 [03:27<03:21,  1.16it/s]
 52%|█████▏    | 252/485 [03:28<03:10,  1.22it/s]
 52%|█████▏    | 253/485 [03:29<03:03,  1.27it/s]
 52%|█████▏    | 254/485 [03:29<03:01,  1.28it/s]
 53%|█████▎    | 255/485 [03:30<02:54,  1.32it/s]
 53%|█████▎    | 256/485 [03:31<02:53,  1.32it/s]
 53%|█████▎    | 257/485 [03:32<02:51,  1.33it/s]
[  9.19779333e-05  -3.95928853e-01   5.16901122e+02] None [5163 5164 5165 ...,  135  136  137] []
 53%|█████▎    | 258/485 [03:32<02:48,  1.34it/s]
 53%|█████▎    | 259/485 [03:33<02:47,  1.35it/s]
 54%|█████▎    | 260/485 [03:34<02:48,  1.34it/s]
 54%|█████▍    | 261/485 [03:35<02:48,  1.33it/s]
 54%|█████▍    | 262/485 [03:35<02:48,  1.32it/s]
 54%|█████▍    | 263/485 [03:36<02:47,  1.32it/s]
 54%|█████▍    | 264/485 [03:37<02:49,  1.30it/s]
 55%|█████▍    | 265/485 [03:38<02:49,  1.30it/s]
 55%|█████▍    | 266/485 [03:38<02:44,  1.33it/s]
 55%|█████▌    | 267/485 [03:39<02:41,  1.35it/s]
 55%|█████▌    | 268/485 [03:40<02:37,  1.37it/s]
 55%|█████▌    | 269/485 [03:41<02:36,  1.38it/s]
 56%|█████▌    | 270/485 [03:41<02:38,  1.35it/s]
 56%|█████▌    | 271/485 [03:42<02:36,  1.37it/s]
[  1.44503278e-04  -4.57928701e-01   5.31818518e+02] None [5508 5509 5510 ...,  257  258  259] []
 56%|█████▌    | 272/485 [03:43<02:34,  1.38it/s]
 56%|█████▋    | 273/485 [03:44<02:47,  1.26it/s]
[  2.03361534e-04  -5.38452784e-01   5.59355984e+02] None [5347 5348 5349 ...,  254  255  256] []
 56%|█████▋    | 274/485 [03:44<02:43,  1.29it/s]
 57%|█████▋    | 275/485 [03:45<02:41,  1.30it/s]
 57%|█████▋    | 276/485 [03:46<02:49,  1.24it/s]
 57%|█████▋    | 277/485 [03:47<02:45,  1.25it/s]
 57%|█████▋    | 278/485 [03:48<02:40,  1.29it/s]
 58%|█████▊    | 279/485 [03:48<02:40,  1.28it/s]
 58%|█████▊    | 280/485 [03:49<02:36,  1.31it/s]
 58%|█████▊    | 281/485 [03:50<02:32,  1.34it/s]
 58%|█████▊    | 282/485 [03:51<02:33,  1.33it/s]
 58%|█████▊    | 283/485 [03:52<02:45,  1.22it/s]
 59%|█████▊    | 284/485 [03:52<02:40,  1.25it/s]
 59%|█████▉    | 285/485 [03:53<02:37,  1.27it/s]
 59%|█████▉    | 286/485 [03:54<02:37,  1.26it/s]
 59%|█████▉    | 287/485 [03:55<02:33,  1.29it/s]
 59%|█████▉    | 288/485 [03:55<02:33,  1.28it/s]
 60%|█████▉    | 289/485 [03:56<02:28,  1.32it/s]
 60%|█████▉    | 290/485 [03:57<02:25,  1.34it/s]
 60%|██████    | 291/485 [03:58<02:25,  1.34it/s]
 60%|██████    | 292/485 [03:58<02:25,  1.33it/s]
 60%|██████    | 293/485 [03:59<02:28,  1.30it/s]
 61%|██████    | 294/485 [04:00<02:27,  1.30it/s]
 61%|██████    | 295/485 [04:01<02:24,  1.32it/s]
 61%|██████    | 296/485 [04:01<02:22,  1.33it/s]
 61%|██████    | 297/485 [04:02<02:21,  1.33it/s]
 61%|██████▏   | 298/485 [04:03<02:17,  1.36it/s]
 62%|██████▏   | 299/485 [04:04<02:16,  1.37it/s]
[  1.08366345e-04  -4.13439425e-01   5.15239700e+02] None [5061 5062 5063 ...,  468  469  470] []
 62%|██████▏   | 300/485 [04:04<02:19,  1.32it/s]
[  8.61916561e-05  -3.92136737e-01   5.09463104e+02] None [5540 5541 5542 ...,  663  664  665] []
 62%|██████▏   | 301/485 [04:05<02:18,  1.33it/s]
[  8.45370679e-05  -3.89749442e-01   5.07436736e+02] None [6200 6201 6202 ...,    4    5    6] []
 62%|██████▏   | 302/485 [04:06<02:23,  1.28it/s]
 62%|██████▏   | 303/485 [04:07<02:22,  1.28it/s]
[  8.41197468e-05  -3.95823137e-01   5.09543925e+02] None [5517 5518 5519 ...,  334  335  336] []
 63%|██████▎   | 304/485 [04:07<02:17,  1.31it/s]
 63%|██████▎   | 305/485 [04:08<02:13,  1.35it/s]
[  7.15466020e-05  -3.92031703e-01   5.15106455e+02] None [5807 5808 5809 ...,   25   26   27] []
 63%|██████▎   | 306/485 [04:09<02:11,  1.36it/s]
 63%|██████▎   | 307/485 [04:10<02:14,  1.33it/s]
 64%|██████▎   | 308/485 [04:10<02:16,  1.30it/s]
 64%|██████▎   | 309/485 [04:11<02:19,  1.26it/s]
 64%|██████▍   | 310/485 [04:12<02:20,  1.25it/s]
 64%|██████▍   | 311/485 [04:13<02:19,  1.24it/s]
 64%|██████▍   | 312/485 [04:14<02:18,  1.25it/s]
[  6.93658157e-05  -3.69751248e-01   5.05859254e+02] None [5837 5838 5839 ...,   89   90   91] []
 65%|██████▍   | 313/485 [04:15<02:19,  1.23it/s]
[  7.57168086e-05  -3.75297258e-01   5.04596605e+02] None [6569 6570 6571 ...,  289  290  291] []
 65%|██████▍   | 314/485 [04:15<02:16,  1.25it/s]
[  4.71675822e-05  -3.44069602e-01   4.95100130e+02] None [6720 6721 6722 ...,  124  125  126] []
 65%|██████▍   | 315/485 [04:16<02:14,  1.26it/s]
[  5.26645964e-05  -3.50852535e-01   4.96933135e+02] None [6664 6665 6666 ...,  139  140  141] []
 65%|██████▌   | 316/485 [04:17<02:27,  1.15it/s]
 65%|██████▌   | 317/485 [04:18<02:41,  1.04it/s]
 66%|██████▌   | 318/485 [04:19<02:33,  1.09it/s]
 66%|██████▌   | 319/485 [04:20<02:22,  1.17it/s]
 66%|██████▌   | 320/485 [04:21<02:16,  1.21it/s]
 66%|██████▌   | 321/485 [04:21<02:12,  1.24it/s]
 66%|██████▋   | 322/485 [04:22<02:08,  1.27it/s]
 67%|██████▋   | 323/485 [04:23<02:05,  1.29it/s]
 67%|██████▋   | 324/485 [04:24<02:01,  1.32it/s]
 67%|██████▋   | 325/485 [04:24<01:59,  1.34it/s]
 67%|██████▋   | 326/485 [04:25<01:55,  1.38it/s]
[  4.01959703e-05  -3.63255031e-01   5.10052048e+02] None [6096 6097 6098 ...,  665  666  667] []
 67%|██████▋   | 327/485 [04:26<01:55,  1.37it/s]
[  2.55166294e-05  -3.42446497e-01   5.01828327e+02] None [6049 6050 6051 ...,  516  517  518] []
 68%|██████▊   | 328/485 [04:26<01:52,  1.39it/s]
[  3.13103170e-05  -3.48381752e-01   5.05059868e+02] None [5690 5691 5692 ...,  193  194  195] []
 68%|██████▊   | 329/485 [04:27<01:53,  1.37it/s]
[ -8.80430890e-06  -3.04458049e-01   4.94913561e+02] None [5860 5861 5862 ...,  370  371  372] []
 68%|██████▊   | 330/485 [04:28<01:51,  1.39it/s]
 68%|██████▊   | 331/485 [04:29<01:52,  1.37it/s]
 68%|██████▊   | 332/485 [04:29<01:53,  1.35it/s]
 69%|██████▊   | 333/485 [04:30<01:54,  1.33it/s]
 69%|██████▉   | 334/485 [04:31<01:54,  1.31it/s]
 69%|██████▉   | 335/485 [04:32<01:55,  1.30it/s]
 69%|██████▉   | 336/485 [04:32<01:54,  1.30it/s]
 69%|██████▉   | 337/485 [04:33<01:54,  1.30it/s]
 70%|██████▉   | 338/485 [04:35<02:34,  1.05s/it]
 70%|██████▉   | 339/485 [04:36<02:19,  1.05it/s]
 70%|███████   | 340/485 [04:36<02:06,  1.14it/s]
[  2.26519644e-05  -3.11788482e-01   4.91782920e+02] None [6685 6686 6687 ...,  212  213  214] []
 70%|███████   | 341/485 [04:37<02:01,  1.18it/s]
[  9.15049823e-06  -2.86903632e-01   4.79464689e+02] None [6347 6348 6349 ...,  816  817    0] []
 71%|███████   | 342/485 [04:38<02:03,  1.16it/s]
[  2.34349682e-05  -3.03892045e-01   4.84268996e+02] None [6916 6917 6918 ...,  245  246  247] []
 71%|███████   | 343/485 [04:39<01:57,  1.20it/s]
 71%|███████   | 344/485 [04:40<01:57,  1.20it/s]
 71%|███████   | 345/485 [04:40<01:53,  1.24it/s]
[  2.01040281e-05  -2.76978499e-01   4.60245237e+02] None [6955 6956 6957 ...,  193  194  195] []
 71%|███████▏  | 346/485 [04:41<01:49,  1.27it/s]
 72%|███████▏  | 347/485 [04:42<01:45,  1.30it/s]
 72%|███████▏  | 348/485 [04:43<01:42,  1.34it/s]
 72%|███████▏  | 349/485 [04:43<01:40,  1.36it/s]
 72%|███████▏  | 350/485 [04:44<01:41,  1.33it/s]
 72%|███████▏  | 351/485 [04:45<01:42,  1.31it/s]
 73%|███████▎  | 352/485 [04:46<01:41,  1.31it/s]
 73%|███████▎  | 353/485 [04:46<01:40,  1.31it/s]
 73%|███████▎  | 354/485 [04:47<01:37,  1.34it/s]
[  1.14876862e-05  -2.65478930e-01   4.57974340e+02] None [6105 6106 6107 ...,  406  407  408] []
 73%|███████▎  | 355/485 [04:48<01:36,  1.34it/s]
 73%|███████▎  | 356/485 [04:49<01:34,  1.36it/s]
 74%|███████▎  | 357/485 [04:49<01:37,  1.31it/s]
 74%|███████▍  | 358/485 [04:50<01:38,  1.29it/s]
 74%|███████▍  | 359/485 [04:51<01:36,  1.30it/s]
 74%|███████▍  | 360/485 [04:52<01:36,  1.30it/s]
 74%|███████▍  | 361/485 [04:52<01:33,  1.33it/s]
 75%|███████▍  | 362/485 [04:53<01:30,  1.37it/s]
 75%|███████▍  | 363/485 [04:54<01:33,  1.31it/s]
 75%|███████▌  | 364/485 [04:55<01:31,  1.32it/s]
 75%|███████▌  | 365/485 [04:55<01:30,  1.32it/s]
 75%|███████▌  | 366/485 [04:56<01:28,  1.35it/s]
 76%|███████▌  | 367/485 [04:57<01:26,  1.36it/s]
 76%|███████▌  | 368/485 [04:58<01:24,  1.38it/s]
[  1.77557436e-05  -3.10397755e-01   4.86261436e+02] None [5916 5917 5918 ...,  293  294  295] []
 76%|███████▌  | 369/485 [04:58<01:25,  1.35it/s]
[  6.22085631e-05  -3.57168198e-01   4.97124184e+02] None [6232 6233 6234 ...,  650  651  652] []
 76%|███████▋  | 370/485 [04:59<01:25,  1.35it/s]
[  4.49662986e-05  -3.20974973e-01   4.77795900e+02] None [6403 6404 6405 ...,  774  775  776] []
 76%|███████▋  | 371/485 [05:00<01:22,  1.39it/s]
[  3.97202212e-05  -3.09379332e-01   4.69117827e+02] None [6199 6200 6201 ...,  559  560  561] []
 77%|███████▋  | 372/485 [05:00<01:20,  1.40it/s]
[  3.27383223e-05  -3.01873312e-01   4.65112744e+02] None [6449 6450 6451 ...,  629  630  631] []
 77%|███████▋  | 373/485 [05:01<01:20,  1.39it/s]
[ -8.02360830e-06  -2.55673788e-01   4.49741907e+02] None [6343 6344 6345 ...,  590  591  592] []
 77%|███████▋  | 374/485 [05:02<01:19,  1.40it/s]
[ -4.80835215e-05  -2.08582698e-01   4.36436736e+02] None [5859 5860 5861 ...,  289  290  291] []
 77%|███████▋  | 375/485 [05:03<01:17,  1.41it/s]
 78%|███████▊  | 376/485 [05:03<01:17,  1.41it/s]
 78%|███████▊  | 377/485 [05:04<01:19,  1.36it/s]
 78%|███████▊  | 378/485 [05:05<01:20,  1.33it/s]
 78%|███████▊  | 379/485 [05:06<01:17,  1.36it/s]
 78%|███████▊  | 380/485 [05:06<01:15,  1.39it/s]
 79%|███████▊  | 381/485 [05:07<01:14,  1.40it/s]
 79%|███████▉  | 382/485 [05:08<01:15,  1.36it/s]
[  3.23537507e-06  -2.45287378e-01   4.28810559e+02] None [5901 5902 5903 ...,   29   30   31] []
 79%|███████▉  | 383/485 [05:08<01:15,  1.35it/s]
[ -2.26128353e-05  -2.23753899e-01   4.23615507e+02] None [5462 5463 5464 ...,  487  488  489] []
 79%|███████▉  | 384/485 [05:09<01:15,  1.34it/s]
[ -1.59767982e-05  -2.26909365e-01   4.19623364e+02] None [5754 5755 5756 ...,  645  646  647] []
 79%|███████▉  | 385/485 [05:10<01:15,  1.33it/s]
[  8.65970628e-06  -2.56913815e-01   4.30475187e+02] None [5610 5611 5612 ...,  576  577  578] []
 80%|███████▉  | 386/485 [05:11<01:12,  1.36it/s]
[  2.82578546e-05  -2.84876104e-01   4.40368436e+02] None [5554 5555 5556 ...,  601  602  603] []
 80%|███████▉  | 387/485 [05:11<01:12,  1.35it/s]
[  4.70180089e-05  -3.10454705e-01   4.49461120e+02] None [5905 5906 5907 ...,  685  686  687] []
 80%|████████  | 388/485 [05:13<01:34,  1.03it/s]
 80%|████████  | 389/485 [05:14<01:31,  1.05it/s]
 80%|████████  | 390/485 [05:15<01:24,  1.13it/s]
 81%|████████  | 391/485 [05:15<01:18,  1.20it/s]
 81%|████████  | 392/485 [05:16<01:14,  1.24it/s]
 81%|████████  | 393/485 [05:17<01:12,  1.28it/s]
 81%|████████  | 394/485 [05:18<01:10,  1.29it/s]
 81%|████████▏ | 395/485 [05:18<01:09,  1.29it/s]
 82%|████████▏ | 396/485 [05:19<01:06,  1.33it/s]
[  5.03827652e-05  -3.31811294e-01   4.47518208e+02] None [6448 6449 6450 ...,  194  195  196] []
 82%|████████▏ | 397/485 [05:20<01:05,  1.34it/s]
[  8.68183716e-05  -3.78667455e-01   4.63129374e+02] None [6505 6506 6507 ...,  278  279  280] []
 82%|████████▏ | 398/485 [05:21<01:05,  1.33it/s]
[  1.25785075e-04  -4.27810456e-01   4.80701918e+02] None [6440 6441 6442 ...,  937  938  939] []
 82%|████████▏ | 399/485 [05:21<01:05,  1.31it/s]
[  1.03628852e-04  -4.19885057e-01   4.89453309e+02] None [6456 6457 6458 ...,  884  885  886] []
 82%|████████▏ | 400/485 [05:22<01:04,  1.32it/s]
 83%|████████▎ | 401/485 [05:23<01:02,  1.34it/s]
[  1.39751932e-05  -3.31391269e-01   4.68024795e+02] None [6696 6697 6698 ...,  703  704  705] []
 83%|████████▎ | 402/485 [05:23<01:00,  1.37it/s]
[ -2.60698017e-05  -2.78903103e-01   4.48713687e+02] None [6726 6727 6728 ...,  727  728  729] []
 83%|████████▎ | 403/485 [05:24<00:59,  1.39it/s]
 83%|████████▎ | 404/485 [05:25<01:00,  1.33it/s]
 84%|████████▎ | 405/485 [05:26<01:00,  1.32it/s]
 84%|████████▎ | 406/485 [05:27<01:03,  1.25it/s]
 84%|████████▍ | 407/485 [05:27<01:00,  1.29it/s]
 84%|████████▍ | 408/485 [05:28<00:59,  1.30it/s]
 84%|████████▍ | 409/485 [05:29<00:58,  1.30it/s]
[ -3.30125202e-06  -3.14559769e-01   4.83488310e+02] None [5858 5859 5860 ...,  491  492  493] []
 85%|████████▍ | 410/485 [05:30<00:57,  1.30it/s]
[  2.03272947e-06  -3.12941119e-01   4.79903356e+02] None [5635 5636 5637 ...,  363  364  365] []
 85%|████████▍ | 411/485 [05:30<00:55,  1.33it/s]
[  3.29704816e-05  -3.29228960e-01   4.76034380e+02] None [5573 5574 5575 ...,  179  180  181] []
 85%|████████▍ | 412/485 [05:31<00:55,  1.32it/s]
[  3.18406472e-06  -2.99822515e-01   4.68171335e+02] None [5542 5543 5544 ...,  242  243  244] []
 85%|████████▌ | 413/485 [05:32<00:53,  1.35it/s]
[  1.66479630e-05  -3.15016284e-01   4.73531436e+02] None [6028 6029 6030 ...,  467  468  469] []
 85%|████████▌ | 414/485 [05:33<00:51,  1.39it/s]
[  2.71113695e-05  -3.35066007e-01   4.83850980e+02] None [5763 5764 5765 ...,  367  368  369] []
 86%|████████▌ | 415/485 [05:33<00:50,  1.40it/s]
[  2.80795312e-05  -3.46489065e-01   4.94347947e+02] None [5322 5323 5324 ...,  312  313  314] []
 86%|████████▌ | 416/485 [05:34<00:49,  1.39it/s]
 86%|████████▌ | 417/485 [05:35<00:50,  1.35it/s]
 86%|████████▌ | 418/485 [05:36<00:50,  1.34it/s]
 86%|████████▋ | 419/485 [05:36<00:50,  1.31it/s]
 87%|████████▋ | 420/485 [05:37<00:49,  1.31it/s]
 87%|████████▋ | 421/485 [05:38<00:49,  1.29it/s]
 87%|████████▋ | 422/485 [05:39<00:47,  1.34it/s]
[  9.53549089e-05  -3.91091888e-01   5.02378545e+02] None [6180 6181 6182 ...,    7    8    9] []
 87%|████████▋ | 423/485 [05:40<00:50,  1.23it/s]
[ -2.61884059e-05  -2.77447211e-01   4.75463148e+02] None [6036 6037 6038 ...,  349  350  351] []
 87%|████████▋ | 424/485 [05:40<00:49,  1.24it/s]
[ -5.11654913e-06  -2.88409795e-01   4.76096391e+02] None [6437 6438 6439 ...,  266  267  268] []
 88%|████████▊ | 425/485 [05:41<00:47,  1.27it/s]
[ -7.11374720e-05  -2.28022415e-01   4.65977277e+02] None [6213 6214 6215 ...,  909  910  911] []
 88%|████████▊ | 426/485 [05:42<00:49,  1.19it/s]
[ -5.02128178e-05  -2.48371553e-01   4.73816611e+02] None [6010 6011 6012 ...,  860  861  862] []
 88%|████████▊ | 427/485 [05:43<00:48,  1.21it/s]
 88%|████████▊ | 428/485 [05:44<00:45,  1.25it/s]
 88%|████████▊ | 429/485 [05:44<00:43,  1.28it/s]
 89%|████████▊ | 430/485 [05:45<00:43,  1.27it/s]
 89%|████████▉ | 431/485 [05:46<00:42,  1.27it/s]
 89%|████████▉ | 432/485 [05:47<00:41,  1.27it/s]
 89%|████████▉ | 433/485 [05:47<00:40,  1.27it/s]
 89%|████████▉ | 434/485 [05:48<00:40,  1.26it/s]
 90%|████████▉ | 435/485 [05:49<00:38,  1.31it/s]
 90%|████████▉ | 436/485 [05:50<00:37,  1.32it/s]
 90%|█████████ | 437/485 [05:50<00:36,  1.31it/s]
[ -5.05907294e-05  -2.32274432e-01   4.62614601e+02] None [6389 6390 6391 ...,  329  330  331] []
 90%|█████████ | 438/485 [05:51<00:35,  1.34it/s]
[ -3.56875598e-05  -2.46426414e-01   4.67817182e+02] None [6369 6370 6371 ...,  303  304  305] []
 91%|█████████ | 439/485 [05:52<00:34,  1.33it/s]
[ -4.28690709e-05  -2.26988188e-01   4.56614189e+02] None [7070 7071 7072 ...,  269  270  271] []
 91%|█████████ | 440/485 [05:53<00:34,  1.32it/s]
[ -2.65505063e-05  -2.42959303e-01   4.63857736e+02] None [7183 7184 7185 ...,  306  307  308] []
 91%|█████████ | 441/485 [05:54<00:33,  1.30it/s]
 91%|█████████ | 442/485 [05:54<00:35,  1.22it/s]
[ -2.83913626e-05  -2.30170176e-01   4.53555461e+02] None [7499 7500 7501 ...,  274  275  276] []
 91%|█████████▏| 443/485 [05:55<00:33,  1.25it/s]
 92%|█████████▏| 444/485 [05:56<00:32,  1.25it/s]
 92%|█████████▏| 445/485 [05:57<00:31,  1.29it/s]
 92%|█████████▏| 446/485 [05:57<00:29,  1.32it/s]
 92%|█████████▏| 447/485 [05:58<00:31,  1.22it/s]
 92%|█████████▏| 448/485 [05:59<00:29,  1.26it/s]
 93%|█████████▎| 449/485 [06:00<00:27,  1.30it/s]
 93%|█████████▎| 450/485 [06:01<00:26,  1.33it/s]
 93%|█████████▎| 451/485 [06:01<00:26,  1.30it/s]
[ -5.46755373e-05  -1.96428534e-01   4.59810862e+02] None [8099 8100 8101 ...,   64   65   66] []
 93%|█████████▎| 452/485 [06:02<00:25,  1.32it/s]
[ -5.19108695e-05  -1.93176008e-01   4.58245869e+02] None [7733 7734 7735 ...,  763  764  765] []
 93%|█████████▎| 453/485 [06:03<00:23,  1.36it/s]
[ -5.38562997e-05  -1.87596019e-01   4.56141418e+02] None [7556 7557 7558 ...,  452  453  454] []
 94%|█████████▎| 454/485 [06:04<00:22,  1.35it/s]
[ -5.01920334e-05  -1.81163027e-01   4.51085369e+02] None [7947 7948 7949 ...,  140  141  142] []
 94%|█████████▍| 455/485 [06:04<00:22,  1.35it/s]
[ -3.70026104e-05  -1.89108667e-01   4.48836049e+02] None [9054 9055 9056 ...,  462  463  464] []
 94%|█████████▍| 456/485 [06:05<00:21,  1.36it/s]
 94%|█████████▍| 457/485 [06:06<00:21,  1.32it/s]
 94%|█████████▍| 458/485 [06:07<00:20,  1.35it/s]
 95%|█████████▍| 459/485 [06:07<00:19,  1.33it/s]
 95%|█████████▍| 460/485 [06:08<00:18,  1.35it/s]
 95%|█████████▌| 461/485 [06:09<00:18,  1.33it/s]
 95%|█████████▌| 462/485 [06:10<00:17,  1.32it/s]
 95%|█████████▌| 463/485 [06:10<00:16,  1.35it/s]
 96%|█████████▌| 464/485 [06:11<00:15,  1.35it/s]
 96%|█████████▌| 465/485 [06:12<00:14,  1.38it/s]
[ -6.54706059e-05  -1.45916470e-01   4.32619121e+02] None [11356 11357 11358 ...,   236   237   238] []
 96%|█████████▌| 466/485 [06:12<00:14,  1.36it/s]
[ -5.74462757e-05  -1.49069997e-01   4.30556908e+02] None [11882 11883 11884 ...,   268   269   270] []
 96%|█████████▋| 467/485 [06:13<00:13,  1.35it/s]
[ -5.85308520e-05  -1.51103771e-01   4.33944898e+02] None [11149 11150 11151 ...,   556   557   558] []
 96%|█████████▋| 468/485 [06:14<00:12,  1.38it/s]
 97%|█████████▋| 469/485 [06:15<00:11,  1.40it/s]
 97%|█████████▋| 470/485 [06:15<00:10,  1.38it/s]
 97%|█████████▋| 471/485 [06:16<00:10,  1.38it/s]
 97%|█████████▋| 472/485 [06:17<00:09,  1.37it/s]
 98%|█████████▊| 473/485 [06:18<00:08,  1.35it/s]
 98%|█████████▊| 474/485 [06:18<00:08,  1.32it/s]
 98%|█████████▊| 475/485 [06:19<00:07,  1.30it/s]
 98%|█████████▊| 476/485 [06:20<00:06,  1.33it/s]
 98%|█████████▊| 477/485 [06:21<00:06,  1.31it/s]
 99%|█████████▊| 478/485 [06:21<00:05,  1.31it/s]
 99%|█████████▉| 479/485 [06:22<00:04,  1.28it/s]
[ -2.10055050e-05  -1.82082787e-01   4.39619878e+02] None [9192 9193 9194 ...,    1    2    3] []
 99%|█████████▉| 480/485 [06:23<00:03,  1.27it/s]
[ -5.30196800e-06  -2.04904439e-01   4.48452880e+02] None [9192 9193 9194 ...,   35   36   37] []
 99%|█████████▉| 481/485 [06:24<00:03,  1.28it/s]
[ -2.63450273e-05  -1.84120597e-01   4.42633351e+02] None [9108 9109 9110 ...,  109  110  111] []
 99%|█████████▉| 482/485 [06:25<00:02,  1.29it/s]
[ -2.01064117e-05  -1.95288885e-01   4.47583239e+02] None [8352 8353 8354 ...,  246  247  248] []
100%|█████████▉| 483/485 [06:25<00:01,  1.30it/s]
[ -2.13758651e-05  -1.94129567e-01   4.46007865e+02] None [7691 7692 7693 ...,    2    3    4] []
100%|█████████▉| 484/485 [06:26<00:00,  1.34it/s]
[ -3.34674033e-05  -1.78548723e-01   4.41026724e+02] None [8540 8541 8542 ...,   73   74   75] []
100%|██████████| 485/485 [06:27<00:00,  1.34it/s]
[ -3.34674033e-05  -1.78548723e-01   4.41026724e+02] None [8540 8541 8542 ...,   73   74   75] []

[MoviePy] Done.
[MoviePy] >>>> Video ready: challenge_result.mp4 

Next is the result of the pipeline on a harder challenge video

In [59]:
HTML("""
<video width="640" height="360" controls>
  <source src="{0}">
</video>
""".format('challenge_result.mp4'))
Out[59]:

Possible Limitations:

The video pipeline developed in this project did a fairly robust job of detecting the lane lines in the test video provided for the project, which shows a road in basically ideal conditions, with fairly distinct lane lines, and on a clear day. It also did a decent job with the challenge video, although it did lose the lane lines momentarily when there was heavy shadow over the road from an overpass.

Also due to white squares between the lane histogram changes and so is fitting polynomial which resulted in in some twisted lane filled in challange video. Also during turns algorithm is not very robust.

In [ ]: